* plugins/gtk/st/Gtk.st (main): create a process that does nothing. It will be only...
[syx.git] / ChangeLog
blob3fca542d304ef90c3cdba1219c590b94b4c59cea
1 2008-05-22  Luca Bruno  <lethalman88@gmail.com>
3         * plugins/gtk/st/Gtk.st (main): create a process that does nothing. It will be only used to hold signal callbacks and to keep the scheduler on
5         * plugins/gtk/plugin-init.c (_syx_gtk_iteration): replaced _syx_gtk_main
6         (syx_g_closure_marshal): do it without threads and in a single process
7         (Gtk_main): register an idle and save the process where to put main loop callback executions
8         (Gtk_mainQuit): register an idle and save the process where to put main loop callback executions
10         * syx/syx-object.h (syx_semaphore_new): added
12         * syx/syx-scheduler.c (syx_scheduler_poll_register_source): added
13         (syx_scheduler_poll_unregister_source): added
14         (_syx_scheduler_poll_wait): check for sources
16         * plugins/gtk/st/GObject.st: move gobject related classes here
18         * plugins/gtk/plugin-init.c (syx_plugin_initialize): non-cold loading and change the loading order
20         * st/kernel/FileStream.st (handleForSemaphore): added
22         * st/kernel/Semaphore.st (waitForWrite, waitForRead): updated
24         * st/kernel/Console.st (nextLine): updated
26         * syx/syx-primitives.c (fileOp): add fileno
27         (Semaphore_waitFor): updated
29 2008-05-20  Luca Bruno  <lethalman88@gmail.com>
31         * syx/syx-signal.c (_syx_smalltalk_sighandler): register signals again
33         * st/kernel/Console.st (registerUserInterruptHandler): added
35         * st/kernel/SystemSignal.st: request for being initialized at every startup
37         * syx/syx-init.c (_syx_file_in_basic):
39         * syx/syx-error.c (syx_signal): execute a blocking process for system signals
41         * syx/syx-enums.h (enum):
43         * st/kernel/Signal.st: generalized and separated Exception by SystemSignal
45         * st/kernel/SystemSignal.st: added
47         * st/kernel/initialDecl.st: add HandlerBlock instance variable to both UserInterrupt and TerminationSignal
49         * syx/syx-signal.c (_syx_smalltalk_sighandler): use syx_signal
51         * syx/syx-error.c (syx_error_init): register new errors for system signals
53         * syx/syx-enums.h (SyxErrorType):
55         * st/kernel/Console.st: quit on system signal
57 2008-05-19  Luca Bruno  <lethalman88@gmail.com>
59         * syx/syx-error.c: simplified and fixed memory leak
61         * syx/syx-memory.c (_syx_memory_gc_mark): only mark the used part of the stack
62         (syx_memory_gc): save the process state
63         (syx_memory_save_image): 
65 2008-05-18  Luca Bruno  <lethalman88@gmail.com>
67         * syx/syx-scheduler.c (_syx_scheduler_find_next_process):
69         * st/kernel/Console.st (nextLine): use the semaphore
71         * syx/syx-object.c (syx_semaphore_wait): moved from syx-utils
72         (syx_semaphore_signal): moved from utils
74         * syx/syx-scheduler.c (_syx_scheduler_process_poll): added. Clear the handled FD from the set.
75         (_syx_scheduler_poll_wait):
77         * doc/manual/inheritance.texi: not yet complete
79         * syx/syx-object.c (syx_symbol_new): make a SmallInteger
81         * syx/syx-object.h (syx_symbol_hash): added
83         * st/kernel/Symbol.st (hash): use the cached hash variable
85         * syx/syx-object.c (syx_symbol_new): cache the hash
86         (syx_dictionary_index_of): wants the hash of the symbol key
87         All calls have been updated. This leads to dropping about 8% of executed instructions.
89         * syx/syx-enums.h (enum): 
91         * st/kernel/initialDecl.st: add hash variable
93         Updated copyright and bumped version number to 0.1.7.
95 2008-05-17  Luca Bruno  <lethalman88@gmail.com>
97         * doc/manual/varscope.texi: begun work
98         maybe complete for now
100         * st/kernel/Console.st: only print last object when a block is executed
102         * src/main.c: convert to UNIX
104         * syx/syx-init.c (syx_initialize_system): let's save here the startupProcess, sometimes the scheduler won't run and it won't be saved in #startupSystem. This fixes the image recovering with multiple processes.
106         * st/kernel/SystemDictionary.st (initializeSystem): startupProcess is saved inside the VM
108         * syx/syx-memory.c (_syx_memory_gc_mark): complete marking of detached frames
110 2008-05-16  Luca Bruno  <lethalman88@gmail.com>
112         * doc/manual/blocks.texi (Loops): completed
114 2008-05-15  Luca Bruno  <lethalman88@gmail.com>
116         * syx/syx-interp.c (syx_interp_enter_context): do not really switch the process
117         (_syx_interp_state_update): checks must be done before calling the method
118         (_syx_interp_switch_process): checks must be done before calling the method
119         (syx_interp_swap_context):
120         (syx_process_execute_scheduled): checks have to be done before calling the method
122         * syx/syx-memory.c (_syx_memory_write_process_stack): fixed warnings
124         * syx/syx-interp.h: add missing interp functions
126         * syx/syx-interp.c (_syx_interp_execute_byte): remove rarely used branch
127         (syx_interp_do_extended): added
128         (syx_interp_mark_arguments):
130 2008-05-13  Luca Bruno  <lethalman88@gmail.com>
132         * doc/manual/blocks.texi (Return value of blocks): added
133         (Conditions): added
135         * doc/manual/language.texi (Comments): added
137 2008-05-11  Luca Bruno  <lethalman88@gmail.com>
139         * doc/manual/commonobjects.texi: filled in but not complete
141         * doc/manual/varscope.texi: added
143         * doc/manual/commonobjects.texi: added
145         * doc/manual/blocks.texi: added
147         * doc/manual/variables.texi: completed
149         * doc/manual/streference.texi (Dictionaries): added
151         * doc/manual/variables.texi: added
153         * doc/manual/methods.texi: added
155         * doc/manual/messages.texi: added
157         * doc/manual/objects.texi: added
159         * doc/manual/language.texi: 
161 2008-05-10  Luca Bruno  <lethalman88@gmail.com>
163         * doc/manual/language.texi: added
165         * syx/syx-memory.c (_syx_memory_write_process_stack): store stack if the first frames are detached
166         (_syx_memory_write_process_stack): check if the stack has been already wrote
167         (_syx_memory_read): read first detached frames
168         (syx_memory_load_image): first fix pointers
170         * syx/syx-types.h:
172 2008-05-07  Luca Bruno  <lethalman88@gmail.com>
174         * doc/manual/introsyx.texi (Invoking syx): documented
176 2008-05-06  Luca Bruno  <lethalman88@gmail.com>
178         * syx/syx-interp.c (syx_interp_context_to_frame): add check
180         * syx/syx-memory.c (_syx_memory_write_frame): save all the stack from locals to the upper frame
181         (_syx_memory_read_lazy_pointer): missing big endian compatibility, rename idx to data
182         (_syx_memory_write_lazy_pointer): give precedence to detached frames
184 2008-05-04  Luca Bruno  <lethalman88@gmail.com>
186         * syx/syx-memory.c (_syx_memory_write_frame): receiver is not only an object
187         (_syx_memory_read_process_stack): 
189         * syx/syx-scheduler.c (syx_scheduler_add_process): run the given process just after the active process
190         (syx_scheduler_init): set default timeslice to 100
192         * syx/syx-memory.c (enum): rename _BOS to _BOF
193         All calls have been updated.
194         
195 2008-05-02  Luca Bruno  <lethalman88@gmail.com>
197         * doc/manpage/syx.1: added
198         
199         * doc/Makefile.am: added
200         add doc target
202         * configure.ac:
203         
204         * doc/manual/introsyx.texi: splitted from syx.texi
206         * doc/manual/syx.texi (Introducing the Syx environment): basic Strings
207         (What is Smalltalk): Image concept
208         (Index): added Classes and Methods
210         * syx/syx-memory.c (syx_memory_save_image): unmark the object being skipped
211         (_syx_memory_write_object_with_vars): ensure the stack
212         (_syx_memory_write_vars_with_fp): take care of detached frames
214         * syx/syx-scheduler.c (syx_scheduler_remove_process): always check for active process
216         * syx/syx-lexer.c (_syx_char_is_binary_second): temporarly removed '-'
218         * syx/syx-parser.c: support <- assignment
220         * syx/syx-memory.c (_syx_memory_write_frame): fix stack pointer
221         (_syx_memory_write_lazy_pointer): fix on NULL process
223 2008-05-01  Luca Bruno  <lethalman88@gmail.com>
224     
225         Create reference to doc/reference.
226         Add doc/manual.
227     
228         * doc/manual/syx.texinfo: added
230         * doc/manual/syx.texi: added license informations and a brief introduction, renamed from .texinfo
231         (Introducing the Syx environment): moved up
232         (Index): add menu and Concepts section
233         Added some concepts.
235         * doc/manual/fdl-1.2.texi: added
237         * doc/manual/syx.texi: added license informations and a brief introduction, renamed from .texinfo
238         (Introducing the Syx environment): moved up
239         (Index): add menu and Concepts section
240         Added some concepts.
241         (Programs): added
242         (Introducing the Syx environment): started some docs
244         * doc/manual/fdl-1.2.texi: added
246         Create reference to doc/reference.
247         Add doc/manual.
249         * doc/manual/syx.texinfo: added
251         * syx/syx-memory.c:
252         (syx_memory_save_image): only store the stack of each process
253         (_syx_memory_write_process_stack): fixed beginning and end of frames
254         
255         * syx/syx-memory.c:
256         (_syx_memory_gc_mark): mark detached frames
258         * syx/syx-memory.c:
259         Fix lazy pointers.
260         Fix BOS/EOS sequence for writing and reading.
261         Store block closures that are not attached to any process.
262         Save processes before any other object.
264 2008-04-27  Luca Bruno  <lethalman88@gmail.com>
266         * syx/syx-memory.c (_syx_memory_write_frame): only write arguments and temporaries for detached frames
267         (_syx_memory_write_process_stack): check for collected stacks, store the index of the frames
268         (_syx_memory_read_process_stack): seek back by one
270         * syx/syx-interp.c (syx_inter_push_block_closure): only copy arguments and temporaries
272 2008-04-26  Luca Bruno  <lethalman88@gmail.com>
274         Do not seek the file, instead read frames as is: this makes the image smaller.
275         Mark beginning and end of whole stacks instead of single frames.
276         Fix reading of frame fields when loading the image.
277         
278         * syx/syx-memory.c (_syx_memory_read): use _read_lazy_pointer and start using to read the process stack
279         (_syx_memory_write_process_stack): store everything in reverse order but saving the index of each frame
281         * syx/syx-memory.c (syx_memory_save_image): skip if object is marked
282         (_syx_memory_gc_sweep): unmark constants
284         * syx/syx-memory.c (_syx_memory_write_object_with_vars): added
285         (_syx_memory_write_lazy_pointer): added
286         (_syx_memory_write_frame): added
287         (_syx_memory_write_process_stack): added
288         (syx_memory_save_image): save the process state before doing any operation
289         (_syx_memory_read_lazy_pointer): added
290         (_syx_memory_read_process_stack): added
292 2008-04-25  Luca Bruno  <lethalman88@gmail.com>
294         * syx/syx-memory.c (struct SyxMemoryLazyPointer): added
295         (enum SyxMemoryType): rename RAW to IMMEDIATE and FP to FRAME_POINTER
297         * syx/syx-memory.c (_syx_memory_read): read framePointer variables
298         (syx_memory_load_image): free lazy pointers
300 2008-04-23  Luca Bruno  <lethalman88@gmail.com>
302         * syx/syx-memory.c (enum SyxMemoryType): added
303         (_syx_memory_write_vars_with_fp): added
304         (_syx_memory_read): added incomplete handler for frame pointers
305         (syx_memory_load_image):
307         * syx/syx-interp.h:
309         * syx/syx-interp.c (_syx_interp_context_update): removed
310         (syx_interp_frame_to_context): use frame pointer as an index
311         (_syx_interp_switch_process):
312         (syx_interp_frame_to_context): need the stack
314         * syx/syx-primitives.c (ContextPart_parent):
315         (ContextPart_parent):
317         * st/kernel/initialDecl.st (ContextPart): add process variable
319         * syx/syx-enums.h:
321         * syx/syx-signal.c (_syx_save_recovered_image): 
323         * src/main.c (_do_recovery): 
325 2008-04-22  Luca Bruno  <lethalman88@gmail.com>
327         * tests/testinterp.c (main): added another ensure test
329         * st/kernel/Signal.st (handlerContextStartingFrom): added
330         (signal): use a more sane approach
331         (handlerContext):
333         * syx/syx-interp.c (syx_interp_do_special): fix block self return
334         (syx_interp_swap_context): implemented
336 2008-04-21  Luca Bruno  <lethalman88@gmail.com>
338         * syx/syx-interp.c (_syx_interp_context_update): added
339         (syx_interp_push_block_closure): update this_context to point to the new detached frame
340         (syx_interp_frame_to_context): set arguments not accessible for now, not good for Smalltalk-side future debugging
341         This fixes basic of the exception handling.
343 2008-04-20  Luca Bruno  <lethalman88@gmail.com>
345         * st/kernel/Number.st (to:by:do, to:by:reverseDo): slightly optimized
347         * syx/syx-primitives.c (Processor_enter): wrong argument
348         (Processor_swapWith): wrong argument
350         * syx/syx-interp.c (syx_interp_enter_context): missed saving this_context
351         (syx_interp_context_to_frame): added
353         * syx/syx-primitives.c (ContextPart_receiver): added
354         (BlockContext_outerContext): added
356         * st/kernel/BlockContext.st (outerContext, homeContext): 
358         * st/kernel/ContextPart.st (tracebackString):
360         * syx/syx-interp.h (struct SyxInterpFrame): add closure
362         * syx/syx-object.h: updated accessors
363         All calls have been updated.
365         * syx/syx-enums.h (enum): add ContextPart enums
367         * st/kernel/initialDecl.st: move receiver to MethodContext and add framePointer to ContextPart
369         * syx/syx-interp.c (syx_interp_frame_to_context): made public
370         (syx_interp_frame_to_context): use closure
372         * syx/syx-primitives.c (_syx_primitive_entries):
373         (ContextPart_parent): added
375         * syx/syx-parser.c (_syx_parser_find_temporary_name): cleaned up, fixes the command line interactive interpreter
377         * st/kernel/Console.st (nextLine):
379         * syx/syx-interp.c (_syx_interp_switch_process): only switch if it's a different process
381         * syx/syx-interp.h (struct SyxInterpState): added process
382         All calls have been updated to use this new member.
384         All tests now works just like the trunk. Have to do more work on the scheduler, though.
385         
386         * syx/syx-interp.h (struct SyxInterpState): removed process_frame
388         * syx/syx-object.c (syx_process_new): initialize bottome frame
390         * syx/syx-primitives.c: updated to match new interpreter internal API
391         
392         * syx/syx-interp.c (_syx_interp_switch_process): fix fetching the frame
393         Refactor most of the functions to request state/process arguments to work concurrency
394         on different processes and execution states.
395         Claned up everything, yet another slightly speedup.
396         All calls have been updated.
398 2008-04-18  Luca Bruno  <lethalman88@gmail.com>
400         * syx/syx-parser.c (_syx_parser_find_temporary_name): fixes issue #29
402         * tests/testinterp.c (main): test block recursion (see issue #29)
404         * syx/syx-interp.c (_syx_interp_switch_process): do not save the process state
406         * syx/syx-parser.c (_syx_parser_parse_optimized_block): fix memory leak
408         * syx/syx-interp.c (syx_interp_enter_context): save process state
409         (_syx_interp_switch_process): always switch process
411         * syx/syx-init.c (syx_initialize_system): 
413 2008-04-16  Luca Bruno  <lethalman88@gmail.com>
415         * syx/syx-primitives.c (BlockClosure_valueWithArguments): forgot part of the implementation
416         (Compiler_parse): fix memory leak
418         * syx/syx-interp.c (_syx_interp_frame_to_context): again do not copy because we have to reference the frame, not important if the context will die for now
420         * syx/syx-object.c (syx_process_new): reset frame pointer
422         * syx/syx-interp.c (_syx_interp_switch_process): really switch process
424         * syx/syx-parser.c (syx_parser_new): do not erase scopes
426 2008-04-15  Luca Bruno  <lethalman88@gmail.com>
428         * syx/syx-interp.h (struct SyxInterpFrame): add detached_frame
430         * syx/syx-interp.c (_syx_interp_frame_to_context): copy the arguments
431         (syx_interp_push_block_closure): detach the current frame
433         * syx/syx-object.h (syx_string_new_unref): renamed from syx_string_new_ref
435         * configure.ac: use -g3 for info and full debug modes
437         * syx/syx-interp.h (SYX_PRIM_FAIL): a lot semplified
439         * syx/syx-parser.c (_syx_parser_find_temporary_name): fix variable name resolution for optimized blocks
441         * syx/syx-interp.c (syx_process_execute_scheduled): usually next instruction is not bigger than the bytecodes count until the end of the process
442         (syx_process_execute_blocked): same here
443         (syx_interp_leave_and_answer): clear the frame
445         * syx/syx-parser.c (_syx_parser_parse_optimized_block): do not create a new scope but share variables with the outer context
447 2008-04-14  Luca Bruno  <lethalman88@gmail.com>
449         * syx/syx-parser.c (_syx_parser_parse_optimized_block): increase method temporary stack to hold optimized block temporaries
451         * syx/syx-interp.c (_syx_interp_find_temporary): forgot to change the code when copied find_argument
452         (_syx_interp_find_argument): fixed
454         * syx/syx-interp.h (syx_interp_stack_peek): fix
456         * syx/syx-parser.c (_syx_scope_free): added
457         (syx_parser_free): fix leak
458         Clear scope tops.
460         * syx/syx-interp.h (struct SyxInterpFrame): removed ensure_block
462         * st/kernel/Set.st: forgot header
464         * syx/syx-interp.c (_syx_interp_find_temporary): added
465         (_syx_interp_find_argument): added
466         (_syx_interp_state_update): obtain syx_uint16 bytecodes
467         (_syx_interp_frame_prepare_new): frame receiver not filled in
468         (syx_interp_do_special): get ensure block from the context, if available
470 2008-04-13  Luca Bruno  <lethalman88@gmail.com>
472         * syx/syx-error.c (syx_signal_does_not_understand): stop being a macro
474         * tests/testparser.c (main): updated
476         * syx/syx-parser.c: fix argument and temporary search
478         * syx/syx-utils.c: more info on method lookup failure
480         * syx/syx-interp.c (_syx_interp_switch_process): wrong way to get the process frame bottom
481         (syx_interp_enter_context): be sure we have a frame
482         (_syx_interp_frame_prepare_new): be aware of null frames and null stack pointers
484         * syx/syx-enums.h: update VM-used variable names
486         * st/kernel/initialDecl.st: variables have been updated to match interpreter implementation
488         * syx/syx-primitives.c: incredibly cleaned up block messages
490         Lots of changes to the interpreter and the parser.
491         Arguments and temporaries of blocks won't be put into the same stack of the home method.
492         Changed the way of dealing with contexts and processes.
493         The interpreter won't create any context except the ones demanded outside of it.
494         All contexts informations are now kept inside the process stack.
495 <<<<<<< HEAD:ChangeLog
496 >>>>>>> 82a09eb... 2008-05-01  Luca Bruno  <lethalman88@gmail.com>:ChangeLog
498 2008-02-20  Luca Bruno  <lethalman88@gmail.com>
500         * syx/syx-object.h (syx_string_new_ref): renamed from syx_string_new_unref
501         All calls have been updated
503         * plugins/readline/plugin-init.c (ReadLine_readline): reference the returned string instead of creatinga new one
505         * syx/syx-primitives.c (FileStream_fileOp): fixed possible memory leak
507         * st/kernel/Console.st: added ConsoleChunkReader to fix multiple statements handling
509         * syx/syx-object.h (syx_string_new): use SYX_VSPRINTF
511         * syx/syx-utils.h (SYX_VSPRINTF): added
513         * syx/syx-utils.c (syx_vsprintf): removed
514         (syx_sprintf): removed
516 2008-02-18  Luca Bruno  <lethalman88@gmail.com>
518         * syx/syx-lexer.c (_syx_lexer_token_identifier): fix var:=val assignment
519         (_syx_lexer_token_number): fix D.! syntax, where D is a digit (issue #28)
521         * syx/syx-interp.h (syx_interp_is_initialized): removed, use syx_system_initialized instead
522         All calls have been updated.
524         * syx/syx-parser.c (_syx_parser_parse_term): raise a new error for bad expression starts
525 =======
527 2008-02-20  Luca Bruno  <lethalman88@gmail.com>
529         * syx/syx-object.h (syx_string_new_ref): renamed from syx_string_new_unref
530         All calls have been updated
532         * plugins/readline/plugin-init.c (ReadLine_readline): reference the returned string instead of creating a new one
534         * syx/syx-primitives.c (FileStream_fileOp): fixed possible memory leak
536         * st/kernel/Console.st: added ConsoleChunkReader to fix multiple statements handling
538         * syx/syx-object.h (syx_string_new): use SYX_VSPRINTF
540         * syx/syx-utils.h (SYX_VSPRINTF): added
542         * syx/syx-utils.c (syx_vsprintf): removed
543         (syx_sprintf): removed
545 2008-02-18  Luca Bruno  <lethalman88@gmail.com>
547         * syx/syx-lexer.c (_syx_lexer_token_identifier): fix var:=val assignment
548         (_syx_lexer_token_number): fix D.! syntax, where D is a digit (issue #28)
550         * syx/syx-interp.h (syx_interp_is_initialized): removed, use syx_system_initialized instead
551         All calls have been updated.
553         * syx/syx-parser.c (_syx_parser_parse_term): raise a new error for bad expression starts
554 >>>>>>> newinterp:ChangeLog
556 2008-01-25  Luca Bruno  <lethalman88@gmail.com>
558         Replaced all occurrences of NotFound signal with #errorNotFound.
560         * st/kernel/initialDecl.st: (NotKeyed): added class
562         * st/kernel/Dictionary.st (printOn): stop after maxPrint
564         * st/kernel/ArrayedCollection.st (with:with:with): added
565         (with:with:with:with): added
567         * st/kernel/Interval.st (species): added
568         (copyClass): removed
569         (collectClass): removed
571         * st/kernel/Collection.st (copyEmptyForCollect):
572         (copyClass): removed
573         (collectClass): removed
574         (with:with:with): added
575         (with:with:with:with): added
576         (removeAll): added
577         (maxPrint): added
578         (printOn): stop after maxPrint
579         (notKeyed): added
581         * st/kernel/Object.st (species): added
582         (errorNotFound): added
584 2008-01-23  Luca Bruno  <lethalman88@gmail.com>
586         * syx/syx-parser.c (_syx_parser_parse_term): fixed bug which allowed things such as [ * ]!
588         * syx/syx-object.h (syx_string_new): allow variadic arguments
590         * syx/syx-error.c (syx_signal): ensure the interpreter is running
592         * syx/syx-parser.c: use syx_signal instead of syx_error
594         * syx/syx-utils.c (syx_sprintf): added
595         (syx_vsprintf): added
597 2008-01-18  Luca Bruno  <lethalman88@gmail.com>
599         * st/kernel/Number.st (to:by:reverseDo): added
601         * st/kernel/OrderedCollection.st (addAll): remove since implemented in Collection
602         (add:after): added
603         (add:before): added
604         (incrementLastIndex:): added
605         (shiftFrom:by): added
606         (addAllLast): added
607         (addAllFirst): added
608         (addLast): added
609         (addFirst): added
610         (removeLast): added
611         (removeFirst): added
612         (removeAtIndex): fixed
614         * st/kernel/String.st (basicAt): check for bounds
615         (basicAt:put): check for bounds
617         * st/kernel/SequenceableCollection.st (copyReplaceAll:with): fixed bug with String usage
619 2008-01-16  Luca Bruno  <lethalman88@gmail.com>
621         * syx/syx-object.c (syx_dictionary_bind_if_absent): fixed read error
623         * syx/syx-types.h (syx_malloc0): do not alloc 0 size
624         (syx_calloc): do not alloc 0 size
625         (syx_malloc): do not alloc 0 size
627         * syx/syx-object.c (syx_dictionary_rehash): fix memory leak
629         * st/kernel/Dictionary.st (keyAtValue): added
630         (keyAtValue:ifAbsent): added
631         (keys): added
632         (values): added
633         (printOn): added
634         (storeOn): added
635         (associationAt:ifAbsent): added
636         (includesAssociation): added
637         (removeAssociation): added
639         * st/kernel/Bag.st (add:withOccurrences): added
641         * st/kernel/Set.st: adjusted categories
643         * st/kernel/Collection.st (inject:into): added
645 2008-01-15  Luca Bruno  <lethalman88@gmail.com>
647         * syx/syx-init.c (_syx_file_in_basic): file in Random.st
649         * st/kernel/Random.st: added
651         * st/kernel/Integer.st (bitInvert): added
652         (bitAt): added
653         (printOn:base): added
654         (storeOn:base): added        
655         (printStringRadix): added
656         Added missing license header
658         * st/kernel/Float.st: change converting to truncation and round off
659         
660         * st/kernel/Integer.st: change converting to truncation and round off
661         (timesRepeat): added
663         * st/kernel/Number.st (rem): added
664         (strictlyPositive): added
665         (squared): added
667         * st/kernel/Character.st (newPage): added
668         (esc): added
669         (backspace): added
670         (isVowel): added
672         Rename #codePoint: occurrences to #value:. Keep #codePoint: anyway.
673         
674         * st/kernel/Integer.st (radix):
676         * st/kernel/String.st:
678         * st/kernel/Number.st (readFrom): 
680         * st/kernel/Character.st (asciiValue): added
681         (digitValue): added
683         * syx/syx-init.c (_syx_file_in_basic): file in Date.st
685         * st/kernel/Date.st: added
687         * st/kernel/initialDecl.st: add Date class
689         * st/kernel/Magnitude.st (between): moved to comparing category
690         (=): added
692         Implement storeOn, storeString and printOn for collections.
694         * st/kernel/SequenceableCollection.st (storeOn): added
696         * st/kernel/Collection.st (printOn): added
697         (storeOn): added
699         * st/kernel/Behavior.st (storeOn): added
701         * st/kernel/Integer.st (storeOn): added
703         * st/kernel/Character.st (storeOn): added
705         * st/kernel/String.st (storeOn): added
707         * st/kernel/Object.st (storeOn): added
708         (storeString): added
709         (printOn): use the right class article        
711         * st/kernel/Behavior.st (storeOn): added
713         * st/kernel/Association.st (storeOn): added
715         * st/kernel/Stream.st (space): added
716         
717 2008-01-14  Luca Bruno  <lethalman88@gmail.com>
719         * syx/syx-primitives.c (SmallInteger_print): removed since unused
721         Implement printOn: and use Transcript instead of #printNl.
722         
723         * st/kernel/Signal.st:
724         * st/kernel/False.st: 
725         * st/kernel/Integer.st: 
726         * st/kernel/True.st: 
727         * st/kernel/Object.st: 
728         * st/kernel/Behavior.st: 
729         * st/kernel/Metaclass.st: 
730         * st/kernel/String.st: 
731         * st/kernel/Character.st: 
732         * st/kernel/Symbol.st: 
733         * st/kernel/Console.st: 
734         * st/kernel/Fraction.st:
735         * st/kernel/UndefinedObject.st: 
736         * st/kernel/Association.st: 
738 2008-01-07  Luca Bruno  <lethalman88@gmail.com>
740         == Released 0.1.6 version == 
742 2008-01-06  Luca Bruno  <lethalman88@gmail.com>
744         Fixed examples build and various dist issues
745         
746         * configure.ac: missing -DWITH_PLUGINS
748         * plugins/Makefile.am: added
750 2008-01-05  Luca Bruno  <lethalman88@gmail.com>
752         Preparing for 0.1.6 release.
754 2007-12-29  Luca Bruno  <lethalman88@gmail.com>
756         * st/kernel/initialDecl.st: store commandLine object instead of commandLineArguments
758         Added makefiles for examples.
759         
760         * syx/Makefile.am: remove macros from here
762         * st/kernel/CommandLine.st: added
764         * src/main.c (_parse_args): do not handle -c
766         * syx/syx-init.c (syx_initialize_system): first send #initializeSystem: blocking then #startupSystem to ensure all things are initialized if the scheduler is not initialized in some embedded applications.
767         (_syx_file_in_basic): added CommandLine.st
769         * st/kernel/SystemDictionary.st (initializeSystem:): added
770         (startupSystem): handle -c and -e options
772         * configure.ac: use SYX_OTHER_LIBS and SYX_OTHER_CFLAGS for libsyx and readd path macros
774 2007-12-26  Luca Bruno  <lethalman88@gmail.com>
776         Working on issue #22.
777         
778         * st/kernel/Console.st (setupHelp): added
779         (helpString): added
780         (run):
782         * syx/syx-lexer.c (_syx_lexer_token_string): unlimited strings
783         (_syx_lexer_token_symbol): unlimited symbols
784         (_syx_lexer_token_identifier): unlimited identifiers
786         Fix image snapshot inside scripts.
788         * st/kernel/FileStream.st (nextPut): removed
789         (nextPutAll): removed
791         * st/kernel/SystemDictionary.st (startupSystem): save the startupProcess before fileing files
793         * st/kernel/Console.st (nextLine): flush stdout
795         * syx/syx-primitives.c (FileStream_fileOp): return stdin/stdout/stderr, use fwrite instead of fputs, read instead of fread and fgetc
797 2007-12-25  Luca Bruno  <lethalman88@gmail.com>
799         Fix issue #25.
800         
801         * st/kernel/Compiler.st (runMultipleAndDeclarations): copy literal array because the primitive will modify it even it's constant
803         * syx/syx-primitives.c (FileStream_fileOp): use fread instead of fgets
805 2007-12-24  Luca Bruno  <lethalman88@gmail.com>
807         Changed FileStream behavior to handle FILE* instead of file descriptors
809         * syx/syx-primitives.c (FileStream_fileOp):
811         * st/kernel/FileStream.st:
813 2007-12-24  Rahul <blufox@gmail.com>
814         * plugins/x11/plugin-init.c: updated the module prefix to X11
816         * plugins/x11/x11gen.rb: updated module prefix to X11 and to remove
818         XlibXlib structure
820         * plugins/x11/Xlib.i: update with NeedWidePrototypes to compile in solaris
822         * plugins/x11/st/XDisplay.st: added instead of XDisplay
824         * plugins/x11/st/Xlib.st: updated with new module prefix X11 instead of
826         Xlib and remove XlibXlib
828         * plugins/x11/st/Display.st: removed
830         * plugins/x11/st/XEvent.st: updated by subclassing X11XEvent
832         * plugins/x11/SConscript: updated to install Xlib.st
834         * plugins/x11/Xlib_wrap.c: updated with new classnames
836         * plugins/x11/swig.rb: updated the module prefix.
838 2007-12-24  Luca Bruno  <lethalman88@gmail.com>
840         * st/kernel/Behavior.st: fixed parsing instance and class variable names
842         * configure.ac: enable mantainer mode, check for pkg-config and add prereq
844         * syx/syx-object.c (syx_dictionary_rehash): missing check
846 2007-12-23  Luca Bruno  <lethalman88@gmail.com>
848         * plugins/x11/st/Wm.st: removed
850         * plugins/x11/plugin-init.c: do not include Xlib_wrap.c
852         * plugins/x11/Xlib.i:
854         * plugins/x11/SConscript: compile Xlib_wrap.c
856         * plugins/x11/Makefile.am: compile Xlib_wrap.c
858         * configure.ac: enable debug level and fix plugins support
860         * tests/stsupport/TestCStruct.st: update according to the latest changes and add tests for unions
862         * tests/testforeignstruct.c (main): test unions
864         Specify CStruct/CUnion fields with the same order as real C structs/unions
865         for instance #(char f1) instead of the old #(f1 char).
866         
867         * st/foreign/CPointer.st (asByteArray): added
868         (asString): added
870         * st/foreign/CStructFieldTypePointer.st: added
872         * st/foreign/CStructFieldType.st: handle pointers with a different class
874         * st/foreign/CUnion.st: added
876         * st/foreign/CUnionGenerator.st: added
878         * syx/syx-init.c (_syx_file_in_basic): file in CUnion.st and CUnionGenerator.st
880         * syx/syx-primitives.c (CPointer_asString): added
881         (CPointer_asByteArray): added
883         * plugins/wingui/Makefile.am: fix install dir
885         * plugins/readline/Makefile.am: fix install dir
886         
887         * plugins/gtk/Makefile.am: fix install dir
889         * plugins/x11/Makefile.am: fix install dir
891 2007-12-21  Luca Bruno  <lethalman88@gmail.com>
893         Build plugins and install desktop files using the GNU build system.
894         
895         * plugins/wingui/Makefile.am: added
897         * plugins/gtk/Makefile.am: added
899         * plugins/readline/Makefile.am: added
901         * plugins/x11/Makefile.am: added
903         * share/Makefile.am: added
904         
905         Run tests into the tests directory.
906         
907         * tests/SConscript (builder_test): use abspath and build into the tests directory
909         * Makefile.am (SUBDIRS): add tests
911         * tests/Makefile.am: added
913         * configure.ac: add st files for the C foreign interface
915 2007-12-20  Luca Bruno  <lethalman88@gmail.com>
917         * tests/stsupport/TestCStruct.st (assertField): test float and doubles
919         * tests/testforeignstruct.c (main): test float and doubles
921         * syx/syx-primitives.c (CStructFieldType_sizeOfPointer): added
922         (CStructFieldType_sizeOfLong): added
924         * st/foreign/CStructFieldType.st: added C types sizes in bytes and long/pointer primitives to retrieve the size.
925         * st/foreign/CStruct.st
927 2007-12-19  Luca Bruno  <lethalman88@gmail.com>
929         * SConstruct: merge CFLAGS
930         use gcc as preferred compiler
931         merge CC LINK and AR
933         * share/syximage.desktop: added comment translation, updated to latest standards and do not display the entry in the menus (thanks to Thilo Pfennig)
935         * share/syx.desktop: added comment translation and updated to latest standards (thanks to Thilo Pfennig)
937         * syx/syx-init.c (syx_init): give precedence to the given root directory
939         * configure.ac: removed unuseful line
941         * tests/stsupport/TestCStruct.st:
942         Created Test1Struct, Test2Struct and Test3Struct for testing read/write accessors.
943         (expectOffsets:from:): renamed to testOffsets:from:
944         (testOffsets:from:):
945         (testRead): added
946         (testWrite): added
948         * tests/testforeignstruct.c (main): create read/write tests
950         * st/foreign/CStruct.st (primOn:type:at): added
951         (primOn:type:at:put): added
952         
953         * st/foreign/CStructFieldSpec.st (compileAccessorsOn): added
955         * st/foreign/CStructGenerator.st (compileAccessorsOn): implemented
957         * st/foreign/CStructFieldType.st (compileAccessorsOn:named:atOffset): added
958         (compileReadAccessorsOn:named:atOffset): added
959         (compileWriteAccessorsOn:named:atOffset): added
960         (initialize): largeInteger renamed to long
962         * syx/syx-primitives.c (CStruct_on_type_at): added
963         (CStruct_on_type_at_put): added
965         * syx/syx-object.h: 
967         * syx/syx-object.c (syx_class_initialize): renamed to syx_object_initialize
968         (syx_object_initialize): added
969         
970 2007-12-18  Luca Bruno  <lethalman88@gmail.com>
972         * st/foreign/CStructGenerator.st (alignFields): cleaned the code
974         * st/foreign/CStructFieldSpec.st (alignAccordingToPreviousField): fixed
975         (nextAlignedOffset): added
977         * tests/testforeignstruct.c: added
979         Moved CPointer and CObject to st/foreign.
981         * SConstruct: install st/foreign files
982         
983         * st/kernel/String.st (isCapitalized): added
985         * syx/syx-init.c (_syx_file_in_basic): file in st/foreign files
987         * st/foreign: added foreign structure interface support for C
989 2007-12-17  Luca Bruno  <lethalman88@gmail.com>
991         * plugins/x11: added (thanks to Rahul aka blufox)
993         * SConstruct: build x11 plugin
995         * st/kernel/CPointer.st: added
997         * st/kernel/CObject.st (free): added
998         (finalize): added
1000         * syx/syx-object.h: 
1002         * syx/syx-object.c (syx_class_initialize): added
1004         * syx/syx-interp.h (syx_interp_is_initialized): added
1006         * syx/syx-init.c (_syx_file_in_basic): file in CPointer.st and CObject.st
1008         * syx/syx-primitives.c (CPointer_free): added
1010         * plugins/SConscript: add x11 plugin
1012         * plugins/gtk/SConscript: add Swig interface files
1014 2007-12-16  Luca Bruno  <lethalman88@gmail.com>
1016         * st/kernel/CObject.st: added
1018         * syx/syx-init.c (_syx_file_in_basic): file in CObject.st
1020 2007-12-14  Luca Bruno  <lethalman88@gmail.com>
1022         == Released 0.1.5 version ==
1024         New process/context API
1026         * plugins/wingui/plugin-init.c (WndProcedure): 
1027         * plugins/gtk/plugin-init.c (syx_g_closure_marshal):
1028         * plugins/gtk/plugin-init.c (syx_plugin_initialize): 
1029         * syx/syx-interp.h (syx_interp_get_current_process): added
1030         
1031 2007-11-18  Luca Bruno  <lethalman88@gmail.com>
1033         * st/kernel/ArrayedCollection.st (withAll:startingAt): added
1035         * st/kernel/OrderedCollection.st (asArray): added
1037         * syx/syx-interp.c (syx_exec_state_fetch): updated to complain new process execution
1039         * syx/syx-object.c (syx_process_new): do not require a context anymore
1040         (syx_method_context_new): setup the Process to hold the new context and copy arguments into the stack
1041         (syx_block_context_new): same as method context, and use the same frame of the outer context
1042         All calls have been updated
1044         * Removed all stacks from contexts and created a stack per process
1046         * Gave an important speed boost up
1048         * syx/syx-primitives.c (ArrayedCollection_replaceFromToWithStartingAt): in substitution of ArrayedCollection_replaceFromToWith
1049         (StdIOStream_nextPut): added
1050         (StdIOStream_nextPutAll): added
1051         (CompiledMethod_runOn): added in substitution of manual method context creation from Smalltalk        
1053 2007-11-08  Luca Bruno  <lethalman88@gmail.com>
1055         * SCons and GNU build: added support for gprof and internal profiling
1057         * syx/syx-profile.h: added
1059         * syx/syx-profile.c: added
1061 2007-11-02  Luca Bruno  <lethalman88@gmail.com>
1063         * examples/web/coldbrowser.st: embedding example of Syx into a CGI application
1065         * syx/syx-object.h (syx_string_new_unref): added
1067         * st/kernel/OrderedCollection.st: remove tally and implement relative indexes
1068         (removeAtIndex:): implemented
1069         (at:): reimplemented
1070         (at:put:): reimplemented
1072 2007-11-01  Luca Bruno  <lethalman88@gmail.com>
1074         * st/kernel/Dictionary.st: fixed rehashing
1075         renamed incrementNumElements to incrementTally
1077         * examples/web: added
1079 2007-08-29  Luca Bruno  <lethalman88@gmail.com>
1081         * syx/syx-object.h (SYX_BLOCK_CONTEXT_ENSURE_BLOCK): added instance variable
1083         * st/kernel/BlockClosure.st (ensure:): fixed block ensuring
1085         * syx/syx-interp.c (syx_interp_do_special): support block ensuring on self-return and stack-return
1087         * configure.ac: support build under MSYS
1089 2007-08-28  Luca Bruno  <lethalman88@gmail.com>
1091         * Added support for GNU building system
1093 2007-08-27  Luca Bruno  <lethalman88@gmail.com>
1095         * syx/SConscript: compile static objects before shared
1097         * SConstruct: install files contained in the share directory, call update-desktop-database and update-mime-database
1099         * st/kernel/ContextPart.st (showTraceback): renamed to tracebackString, show the real methodClass
1101         * syx/syx-object.h (SYX_OBJECT_IS_SYMBOL): added
1103         * syx/syx-init.c (syx_initialize_system): set syx_system_initialized to TRUE
1105         * syx/syx-error.c (syx_signal): if system is not initialized, call syx_error ()
1106         All calls have been updated
1108         * Renamed numElements variable to tally as designed by Smalltalk-80
1110         * st/kernel/Behavior.st (setInstanceVariableNames): fixed to scan the given string of variable names
1112         * st/kernel/YXTools.st: renamed to MVC.st
1114 2007-08-26  Luca Bruno  <lethalman88@gmail.com>
1116         * st/kernel/Behavior.st (setInstanceVariableNames): added
1117         
1118         * st/kernel/Metaclass.st: fixed metaclass creation
1120         * st/kernel/Behavior.st: fixed class creation
1121         
1122         * st/kernel/Dictionary.st (at:ifAbsent:): added
1124         * syx/syx-utils.c (syx_nanotime): added
1126         Fixed English in some comments, thanks to billijoex.
1127         
1128         * syx/syx-utils.c (syx_cold_parse_methods): restore the lexer if the syntax is not the expected for parsing method definitions
1130         Default compiler is now the C compiler, not the ST anymore. The ST compiler will be mantained
1131         for reference only.
1132         
1133         * syx/syx-lexer.c (syx_lexer_next_chunk): do not truncate the text by one char if it's at the end
1135         * syx/syx-parser.c (syx_parser_parse): be able to skip message pattern
1136         All calls have been updated
1138         * st/kernel/Compiler.st (runMultipleAndDeclarations): added
1140 2007-08-24  Luca Bruno  <lethalman88@gmail.com>
1142         * syx/syx-error.h: got rid of varargs macros
1144         * syx/syx-platform.h (SYX_BEGIN_DECLS): begins declarations for cplusplus
1145         (SYX_END_DECLS): ends declarations for cplusplus
1146         All headers have been updated
1148 2007-08-22  Luca Bruno  <lethalman88@gmail.com>
1150         * syx/syx-platform.h (syx_strdup): added
1151         (strndup): renamed to syx_strndup and moved from syx-types.h
1152         (malloc, malloc0, calloc, free): moved from syx-types.h
1153         All calls have been updated
1154         
1155         * All mixed declarations and code changed to allow strict ISO C compilation
1156         
1157         * All comments changed to complain ANSI C
1158         
1159         * syx/syx-object.h (struct SyxObject): bit-fields were removed for -pedantic, the size didn't vary
1161         * syx/syx-utils.c: issue #15 (Krzysztof Kowalczyk)
1163         * Fixed issue #14 (kkowalczyk)
1165 2007-08-21  Luca Bruno  <lethalman88@gmail.com>
1167         * examples/embedding/SConscript: fix use of -rdynamic
1169         * Applied patch of issue #13
1171         * syx/syx-signal.c: signal function to be optional
1173 2007-08-20  Luca Bruno  <lethalman88@gmail.com>
1174         
1175         == Released 0.1.4 version ==
1177         * Missing documentation was covered for Doxygen
1179 2007-08-19  Luca Bruno  <lethalman88@gmail.com>
1181         * src/main.c (_parse_args): an comand line option parser was created to replace getopt
1183         * examples/console/SConscript (target): added
1185         * examples/SConscript: added
1187         * examples/embedding/SConscript: added
1189         * syx.desktop: added
1191         * syx.sln: added for MSVC support
1193         * syx.vcproj: added for MSVC support
1195         * syx/syx-plugins.c (_syx_plugin_default_method): added
1196         (syx_plugins_init): do not create a static method on initialization because it's not being inserted in a GC root
1198 2007-08-17  Luca Bruno  <lethalman88@gmail.com>
1200         * plugins/gtk/gtk.i: remove pango dependency temporarly
1202         * plugins/gtk/pango.i: removed temporarly
1204         * plugins/gtk/st/PangoAttrList.st: removed temporarly
1206         * plugins/gtk/SConscript: link to gdk-win32
1208 2007-08-16  Luca Bruno  <lethalman88@gmail.com>
1210         * plugins/gtk/plugin-init.c (syx_plugin_initialize): parse all remaining st files
1211         (syx_g_closure_marshal): leave gdk threads before entering the smalltalk callback
1213         * plugins/gtk/st/GtkTools.st: added a textview for evaluating code
1215         * plugins/gtk/st/Gtk.st: added missing GTK+ classes
1217         * st/kernel/YXTools.st (onDoIt): evaluate code
1219         * st/kernel/Compiler.st (identifierToken): handle identifier:= as an assigment
1221         * st/kernel/FileStream.st (StdIOStream): added class and methods for standard I/O
1222         (open:for:): support append mode, read and write create (w+)
1224         * syx/syx-primitives.c (FileStream_fileOp): added more checks, use O_CREAT flags for write, support w+ and append mode
1226         * syx/syx-scheduler.c (syx_scheduler_add_process): fixed process scheduling
1228         * syx/syx-signal.c (_syx_internal_sighandler): save a recovered copy of the image on SIGSEGV or SIGILL
1229         (_syx_save_recovered_image): added
1231         * src/main.c (_do_recovery): added for recovering an image from a possibly broken Process
1233 2007-08-15  Luca Bruno  <lethalman88@gmail.com>
1235         * tests/testscheduler.c: fixed blocks to use the right number of arguments
1237         * plugins/gtk/st/GtkTextView.st: added
1239         * SConstruct: rootdir option has been added
1240         support for documentation installation/clean has been added
1241         replaced doc command with doc option
1243 2007-08-14  Luca Bruno  <lethalman88@gmail.com>
1245         * plugins/gtk/st/GtkTextView.st: added
1247         * plugins/gtk/st/GtkTextMark.st: added
1249         * plugins/gtk/st/GtkTextTag.st: added
1251         * plugins/gtk/st/GtkTextTagTable.st: added
1253         * st/kernel/Object.st (perform methods): check argument count
1255         * syx/syx-error.h (syx_signal_create_context): added
1257         * syx/syx-parser.c (_syx_parser_parse_block_message_pattern): save argumentCount
1258         (_syx_parser_parse_method_message_pattern): save argumentCount
1260         * syx/syx-object.h (SYX_CODE_ARGUMENT_COUNT): instance variable added do CompiledCode
1262 2007-08-13  Luca Bruno  <lethalman88@gmail.com>
1264         * makefile.vc (OBJS): missed new syx-signal.obj
1266         * st/kernel/FileStream.st (fileIn): handle scripting header
1268         * syx/syx-utils.c (syx_show_traceback): added
1270         * st/kernel/SystemSignal.st: added
1272         * syx/syx-signal.c: added
1274         * plugins/gtk/st/GtkTextIter.st: added
1276         * syx/syx-lexer.c: usage of pushed_back char has been fixed to build for PowerPC
1278 2007-08-12  Luca Bruno  <lethalman88@gmail.com>
1280         * syx/syx-interp.c: missed endianness compatibility for optimized blocks
1282         * st/kernel/SystemDictionary.st (haveBigEndianness): removed
1284         * src/main.c (_getopt_do): -c option has been added
1286         * st/kernel/SystemDictionary.st (continueStartup): a new variable has been added to specify if the startup sequence must continue after fileing in files
1288         * syx/syx-platform.h (SYX_PLUGIN_PATH): added
1290         * SConstruct: option 'plugindir' has been added which belongs by default to the machine-dependent directory $libdir/syx
1292 2007-08-11  Luca Bruno  <lethalman88@gmail.com>
1294         * plugins/gtk/st/GtkTextBuffer.st: added but doesn't work yet because of other Gtk dependencies
1296         * st/kernel/initialDecl (CompiledCode): argumentCount and temporaryCount have been renamed to argumentStackSize and temporaryStackSize and moved to CompiledMethod
1297         (CompiledBlock): argumentsTop has been renamed to argumentStackTop
1299         * syx/syx-enums.h: instance variables of CompiledCode, CompiledMethod and CompiledBlock have been updated
1301         * syx/syx-object.c: method and block context creation have been updated according to the above refactoring
1302         
1303         * st/kernel/PositionableStream.st (peek): answer nil if at the end
1304         (skipTo:): added
1306         * syx/syx-lexer.c (_syx_lexer_token_symbol): support for quoted symbols
1308         * st/kernel/Compiler.st (initializeStream): support for quoted symbols
1310         * syx/syx-init.c (syx_set_root_path): save the root path anyway also if it doesn't exist
1312         * src/main.c (_getopt_do): fixed issue #11
1314         * syx/syx-primitives.c (FileStream_fileOp): assert the object is a string for nextPutAll:
1316         * plugins/wingui/SConscript: fixed building
1318         Renamed all 'class' to 'klass' to support C++ compilation.
1319         Applied issue #9 patch
1321 2007-08-10  Luca Bruno  <lethalman88@gmail.com>
1323         Refactored all inline to be inserted into headers (issue #9).
1324         Added dllimport and dllexport attributes when building DLLs.
1325         
1326         * syx/syx-memory.c (syx_freev): removed
1328         * plugins/gtk/st/GtkScrolledWindow.st: added
1330         * plugins/gtk/st/GtkAdjustment.st: added
1332         * plugins/gtk/plugin-init.c (syx_g_closure_marshal): added marshal function for GClosure
1334         * plugins/gtk/st/GObject.st (GClosure): added wrapper
1335         
1336         * syx/syx-utils.c (syx_send_messagev): added
1338         * syx/syx-plugins.c (syx_plugin_symbol): added
1340         * st/kernel/SystemDictionary.st (plugin:cSymbol:): added with primitive
1342 2007-08-09  Luca Bruno  <lethalman88@gmail.com>
1344         * syx/syx-scheduler.c (syx_scheduler_remove_process): set next process to be active
1346         * syx/syx-primitives.c (ArrayedCollection_replaceFromToWith): added yet more checks
1348         * syx/syx-plugins.c (syx_plugin_call_interp): support C calls to nil plugin (main program)
1350         * st/kernel/Compiler.st (indexOfInstance): support C calls to nil plugin (main program)
1352         * SConstruct: added inline checks (issue #9)
1354         * syx/syx-platform.h: inline defines (issue #9)
1356         * syx/syx-parser.c: indented file and fixed typo (issue #10)
1357         (_syx_parser_parse_primitive): support C calls to the main program
1359         * syx/syx-utils.c (syx_do_it_blocking): added
1361 2007-08-08  Luca Bruno  <lethalman88@gmail.com>
1363         Added support for MSVC compilation (issue #8)
1364         
1365         * syx/syx-plugins.c (syx_plugin_call): added, previous was renamed to syx_plugin_call_interp
1366         (syx_plugins_init): added for creating a default method to send #primitiveFailed
1367         Added support for main program handle (NULL filename)
1369         * st/kernel/SystemDictionary.st (plugin:cCall:withArguments:): added with relative primitive
1370         (cCall:withArguments:): added
1372         * syx/syx-utils.c (syx_file_in_blocking): added
1374         * examples/embedding: added 4 kind of examples
1376         * syx/SConscript: include syx-config.h to be installed
1378 2007-08-07  Luca Bruno  <lethalman88@gmail.com>
1380         * st/kernel/YXTools.st: added model-view-controller classes and basic Workspace and WorkspaceView
1382         * plugins/gtk/st/GtkTools.st: added GtkWorkspace and GtkWorkspaceView
1384         * plugins/gtk/st/GtkBox.st: added wrapper for GtkBox, GtkHBox and GtkVBox
1386         * plugins/gtk/st/GtkButton.st: added wrapper
1388         * plugins/gtk/pango.i: added basic SWIG interface
1390         * plugins/gtk/plugin-init.c: fixed threaded main loop
1392 2007-08-06  Luca Bruno  <lethalman88@gmail.com>
1394         * syx/syx-object.c (syx_dictionary_index_of): added
1395         (syx_dictionary_rehash): added
1396         (syx_dictionary_at_symbol_put): rehash when full
1398         Changed dictionary behavior to use linear probing
1399         Detached Gtk smalltalk files to be packaged alone
1400         Create a SWIG interface to wrap Gtk
1402 2007-08-05  Luca Bruno  <lethalman88@gmail.com>
1404         * st/kernel/BlockClosure.st (ensure:): fixed
1405         (ifCurtailed:): added
1407         * st/kernel/String.st: added comparing methods
1408         (sameAs:): added
1409         (subStrings:): added
1410         (asUppercase): added
1411         (asLowercase): added
1413         * st/kernel/OrderedCollection.st: added size buffering for new elements
1415         * st/kernel/Number.st (/): added zero division check
1417         * st/kernel/Signal.st: added ZeroDivide
1419         * Added basic converting methods to collections
1421 2007-08-04  Luca Bruno  <lethalman88@gmail.com>
1423         * st/kernel/SequenceableCollection.st (replaceFrom:with:): fixed stop index
1425         * st/kernel/Interval.st (at:): added
1426         (size): added
1427         (start, stop, step): added accessors
1428         (reverse): added
1430         * st/kernel/Number.st (to:by:do:): support for negative steps
1431         (to:by:reverseDo:): removed
1433         * st/kernel/SequenceableCollection.st (from:to:by:keysAndValuesDo:): added
1434         (from:to:by:do:): added
1436         * st/kernel/Collection.st (copyClass): added
1437         (collectClass): added
1439         * SConstruct: add the examples directory to the source distribution
1441 2007-08-03  Luca Bruno  <lethalman88@gmail.com>
1443         * syx/syx-primitives.c (Object_perform): fixed arguments
1444         (Object_performWithArguments): fixed too
1446         * st/kernel/Compiler.st (symbolToken): fixed binary symbol parsing
1447         (parseArray): added
1449         * st/kernel/Number.st (readFrom:): fixed parsing
1451         * st/kernel/Interval.st: added
1453         * syx/syx-init.c (syx_build_basic): send #initializeFirstSystem instead of #initialize
1455         * st/kernel/ArrayedCollection.st (copyWithout:): added refinement
1456         
1457         * st/kernel/Collection.st (copyWithout:): added
1459         * st/kernel/SequenceableCollection.st (copyReplaceAll:with:): added
1460         (matchSubcollection:startingAt:): added
1461         (copyReplaceFrom:to:with:): added
1462         (copyReplaceFrom:to:withObject:): added
1463         (copyReplacing:withObject:): added
1465 2007-08-02  Luca Bruno  <lethalman88@gmail.com>
1467         * st/kernel/TextCollector.st: use #perform:with: to send message to the proxy
1469         * st/kernel/Behavior.st (initializeSubclassOf): create a method dictionary
1471         * syx/syx-object.c (syx_metaclass_new): create a method dictionary
1472         (syx_class_new): create a method dictionary
1474         * st/kernel/Object.st (respondsTo:): added
1475         (perform:): added
1476         (perform:with:): added
1477         (perform:with:with:): added
1478         (perform:with:with:with): added
1479         (perform:withArguments): added
1481         * st/kernel/Behavior.st (doesUnderstand:): added
1483         * st/kernel/Dictionary.st (includesKey:): added
1485         * st/kernel/Set.st: added rehashing methods
1486         added numElements instance variable
1488         * st/kernel/Dictionary.st: added rehashing methods
1489         added numElements instance variable
1491         * st/kernel/ObjectMemory.st (atData:put:): added with primitive
1493         * st/kernel/Link.st: removed since unused anymore
1495 2007-08-01  Luca Bruno  <lethalman88@gmail.com>
1497         * syx/syx-interp.c (syx_process_execute_blocking): save/restore the active process when running blocking processes
1499         * syx/syx-interp.h (SYX_PRIM_FAIL): add the arguments array to the GC transaction
1501 2007-07-30  Luca Bruno  <lethalman88@gmail.com>
1503         == Released 0.1.3 version ==
1504         
1505         * st/kernel/Character.st (isXDigit): added
1507         * st/kernel/Compiler.st (literalArrayToken): fixed parsing when the array contains numbers
1509         * st/kernel/Number.st (readFrom:): parse radix numbers
1511         * syx/syx-parser.c (_syx_parser_parse_literal_array): character parsing in the array was missed
1513         * SConstruct: updated the help message
1515         * Documentate more functions
1517         * tests/testinterp.c: fix to run after the startup changes
1519 2007-07-29  Luca Bruno  <lethalman88@gmail.com>
1521         * st/kernel/CompiledMethod.st: fixed inherited methods
1523         * st/kernel/initialDecl.st: fixed inheritance for compiled codes according to syx-enums.h
1525         * plugins/gtk/SConscript: fix Gtk+ build
1527         * plugins/wingui: added plugin
1529         * syx/syx-scheduler.c (syx_scheduler_run): missing static
1531         * syx/syx-plugins.c: handle unicode win32 api
1533         * syx/syx-platform.h: emulate errno for platforms that doesn't have support for it
1535         * syx/syx-primitives.c (FileStream_fileOp): return 0 if fstat is not available
1537         * syx/syx-error.h (syx_error): show a MessageBox on WindowsCE
1539         * syx/syx-utils.c (syx_cold_file_in): say we have 1000000 characters in a standard file if fstat is not available
1540         (syx_to_wstring): added
1541         (syx_to_string): added
1543         * st/kernel/WinWorkspace.st: added
1545         * syx/syx-init.c: fixed number of instance variables for Smalltalk
1546         (syx_initialize_system): remove previous startupProcess and call #startupSystem: in a new scheduled process
1547         (syx_init): force image to be in the root device for embedded Windows CE
1549         * syx/syx-types.h: added syx_wstring and syx_wsymbol types
1551         * st/kernel/TextCollector.st (cr): show also the carriage return
1553         * st/kernel/SystemDictionary.st (startupSystem:): (was initializeSystem:) handle startup requests
1555         * src/main.c (_do_getopt): restrictive support to missing getopt
1556         force WinWorkspace to startup on WindowsCE
1558         * src/SConscript: do not create the default image if we're cross compiling
1560         * syx/SConstruct: added WINGUI option to enable/disable the syx-wingui plugin
1561         define WINCE macro when compiling for Windows CE
1562         let getopt, fstat, access, getenv and perror be optional functions
1563         do not specify c99 standard when cross compiling to WindowsCE since the library doesn't handle ANSI calls
1565 2007-07-26  Luca Bruno  <lethalman88@gmail.com>
1567         * SConstruct: added 'shared' and 'static' options
1569         * st/kernel/Compiler.st: fixed stream positioning to handle cascading
1571         * st/kernel/ObjectMemory.st (setConstant:): added
1573         * st/kernel/Compiler.st (genLiteral:): set literals to be constant
1575         * syx/syx-init.c (syx_initialize_system): pass command line arguments to the Smalltalk initializer
1576         (syx_init): initialize command line arguments
1578         * st/kernel/SystemDictionary.st (commandLineArguments): added variable with accessor
1579         (initializeSystem:): fileIn the first argument
1581 2007-07-25  Luca Bruno  <lethalman88@gmail.com>
1583         * syx/syx-interp.c (syx_interp_do_special): ensure condition is boolean
1585         * syx/syx-object.c (syx_class_lookup_method): class for super messages must be specified instead of a specific alghoritm
1586         (syx_class_lookup_method_binding): same
1588         * syx/syx-enums.h (SyxVariables): Do not include unused instance variables in CompiledBlock
1589         All calls have been updated, also in Smalltalk.
1590         
1591         * st/kernel/SequenceableCollection.st (replaceFrom:with:): use self size instead of the given collection one
1592         (copyFrom:): added
1594         * st/kernel/CompiledMethod.st (CompiledCode): moved accessors from CompiledMethod and added methodClass
1596         * st/kernel/WriteStream.st: added some other initialization for other streams
1598         * st/kernel/Stream.st: added access mode
1600         * st/kernel/FileStream.st (fileIn): added
1601         Added more features
1603         * syx/syx-primitives.c (FileStream_fileOp): new operation to obtain the size of the file; return nil for #next when at EOF
1604         (ArrayedCollection_replaceFromToWith): fixed size of the effective replacement and added checks
1605         (String_compile): removed
1607 2007-07-24  Luca Bruno  <lethalman88@gmail.com>
1609         Fixed a big bug relative to super messages updating all calls.
1611         * st/kernel/Number.st (readFrom:): fixed float parsing
1613         * st/kernel/Compiler.st (CompilerLexer): include the stream as instance variable instead of subclassing ReadStream
1615 2007-07-23  Luca Bruno  <lethalman88@gmail.com>
1617         * st/kernel/String.st (compileFor:): a refactor of old #compile using the ST compiler
1619         * syx/syx-init.h (SYX_INIT_MEMORY_SIZE): changed default size from 20000 objects to 100000 objects
1621         * syx/syx-init.c (syx_initialize_system): addded
1623         * st/kernel/SystemDictionary.st (initialize): added
1624         (initializeSystem): call all system initialization object requests
1625         (registerForSystemInitialization:): added
1627         * syx/syx-utils.c (syx_find_first_non_whitespace): added
1629         * syx/syx-parser.c (syx_parser_parse): save text in methods
1631         * syx/syx-object.h (SYX_METHOD_TEXT): added 'text' instance variable to CompiledCodes
1633         * SConstruct (endianness): added option to manually specify the endianness of the machine
1634         (host): added option to cross-compile for the specified machine
1636         * st/kernel/Compiler.st (duplicateAt:): added
1637         (doContinuation:): support cascades
1639 2007-07-22  Luca Bruno  <lethalman88@gmail.com>
1641         * SConstruct: cache options
1642         added support for cross compiling
1644         * st/kernel/Compiler.st (CompilerParser): added whileTrue: and whileFalse: optimized blocks
1645         (parseNameTerm:): added
1646         (parseBlock): added
1647         (CompilerLexer): do not skip when at the end of the stream
1648         fixed super receiver
1650         * st/kernel/Dictionary.st (associationAt:): added
1651         
1652         * st/kernel/CompiledMethod.st (CompiledBlock): initialize from parser
1654         * st/kernel/Association.st (VariableBinding): added several methods
1656         * st/kernel/Behavior.st (compile:): added
1658         * st/kernel/Number.st (fromStream:): skip back the stream if it's not a float
1660 2007-07-20  Luca Bruno  <lethalman88@gmail.com>
1662         * st/kernel/Compiler.st: added optimized conditional blocks
1664         * st/kernel/Number.st (fromStream:): ensure the character is not nil
1666 2007-07-19  Luca Bruno  <lethalman88@gmail.com>
1668         * st/kernel/Magnitude.st (between:and:): moved from Number
1669         
1670         * st/kernel/Behavior.st (allSuperclassesDo:): fixed
1672         * st/kernel/CompiledMethod.st (fromParser:): added
1673         (initializeParser:): added
1675         * st/kernel/Character.st: handle magnitude
1677         * st/kernel/Compiler.st (CompilerParser): done, missing cascades and optimized blocks
1679         * st/kernel/Stack.st: added
1681 2007-07-17  Luca Bruno  <lethalman88@gmail.com>
1683         * syx/syx-bytecode.c (syx_bytecode_duplicate_at): increase stack size when duplicating objects
1685         * st/kernel/SequenceableCollection.st (indexOf:): added
1686         (indexOf:startingAt:ifAbsent:): use #= instead of #==
1688         * st/kernel/Compiler.st: parse literal arrays
1689         (CompilerBytecode): added
1691         * st/kernel/Object.st (caseOf:otherwise:): added
1693 2007-07-16  Luca Bruno  <lethalman88@gmail.com>
1695         * syx/syx-object.c (syx_class_lookup_method_binding): fixed to handle super messages
1696         (syx_class_lookup_method): idem
1697         All calls have been updated
1699         * syx/syx-lexer.c (_syx_lexer_token_string): support single quotes into strings
1700         (_syx_lexer_token_binary): support for binary symbols up to 2 characters
1702         * st/kernel/initialDecl.st (ReadStream): added
1704         * st/kernel/Compiler.st: added
1706         * st/kernel/Float.st (*): added
1708         * st/kernel/String.st (asNumber): added
1710         * syx/syx-memory.c: save object->is_constant in the image
1712         * syx/syx-platform.h (syx_bswap_16): added
1713         (SYX_COMPAT_SWAP_16): added
1714         (SYX_COMPAT_SWAP_32): added
1716 2007-07-15  Luca Bruno  <lethalman88@gmail.com>
1718         * syx/syx-platform.h (syx_bswap_32): wrap bswap_32
1720         * SConstruct (check_endianness): added to check endianness
1721         (byteswap.h): added for optional check
1723         * syx/syx-memory.c: first attempt for the image to be compatible with different endianness
1725         * src/SConscript: let it work on MacOSX (PPC)
1727         * plugins/gtk/SConscript: do not compile GTK if it's not found
1729         * st/kernel/Character.st: applied Sam Philips's patch that covers more ANSI
1731         * st/kernel/Number.st (reciprocal): added
1732         (asFraction): added
1733         (compare:): added
1735         * st/kernel/Integer.st (gcd:): added
1737         * st/kernel/Fraction.st (reduce): added
1738         (+): added
1739         (-): added
1740         (*): added
1741         (/): added
1742         (reciprocal): added refinement
1743         (compare:) added
1744         (<, >, <=, >=, =, ~=): added
1745         (zero): added
1747         * syx/syx-memory.c (syx_memory_gc_end): fixed GC transactions ending
1748         (syx_memory_gc): save/restore GC transaction state to hold #finalize messages
1750         * syx/syx-lexer.c (_syx_lexer_token_number): fixed small integer parsing
1752 2007-07-14  Luca Bruno  <lethalman88@gmail.com>
1754         * st/kernel/LargeInteger.st (/): added
1755         (//): added
1756         (quo:): added
1758         * st/kernel/Number.st (//): added
1759         (quo:): refined
1761         * st/kernel/Float.st (/): added
1762         (floor): added
1763         (ceiling): added
1765         * st/kernel/Integer.st (radix:): added
1766         (printString): added
1768         * syx/syx-primitives.c (SmallInteger_div): added overflow check
1770         * syx/syx-types.h (SYX_SMALL_INTEGER_DIV_OVERFLOW): added
1772         * syx/syx-lexer.c (_syx_char_is_binary_second): fixed '-' character from being used as second char for binary messages (e.g 4/-3 should be handled as 4 / -3)
1774         * st/kernel/SmallInteger.st (/): added
1775         
1776         * st/kernel/Fraction.st: added
1777         (asFloat): added
1779 2007-07-13  Luca Bruno  <lethalman88@gmail.com>
1781         == Released 0.1.2 version ==
1783         * syx/syx-memory.c (GC transactions): use multiple-level transactions
1785         * st/kernel/Float.st (truncated): added
1787         * st/kernel/SmallInteger.st (quo:): added and remove #/ fake
1789 2007-07-12  Luca Bruno  <lethalman88@gmail.com>
1791         * syx/syx-primitives.c (Object_at_put): prevent from modifying constant literals
1792         (ByteArray_at_put): idem
1794         * syx/syx-object.h (struct SyxObject): added is_constant flag
1796         * st/kernel/Number.st (to:by:reverseDo:): added
1798         * st/kernel/ArrayedCollection.st (copyWith:): added
1800         * st/kernel/Collection.st (copyWith:): added 
1802         * st/kernel/SequenceableCollection.st (findFirst:): added
1803         (findLast:): added
1804         (reverse): added
1805         (reverseDo): added
1806         (with:do:): added
1807         (atAll:put:): added
1808         (atAllPut:): added
1809         (from:to:keysAndValuesDo:) added
1811 2007-07-11  Luca Bruno  <lethalman88@gmail.com>
1813         * SConstruct: build on Mac OS
1815         * syx/SConscript: call ldconfig on POSIX during installation
1816         
1817         * syx/syx-object.c (SYX_SMALL_INTEGER_MUL_OVERFLOW): added
1818         (SYX_SMALL_INTEGER_SHIFT_OVERFLOW): added
1820         * syx/syx-memory.c (syx_memory_save_image): save large integers taking care of that Syx built without the Bignum support
1822         * syx/syx-interp.c (syx_process_execute_blocking): be safe against scheduling processes
1824         * syx/syx-primitives.c (LargeInteger): return a SmallInteger when we can
1826         * syx/syx-bytecode.c (syx_bytecode_gen_message): special unary and binary messages need to be rewritten
1828         * syx/syx-interp.c (syx_send_binary_message): fixed possibly memory corruption
1830 2007-07-10  Luca Bruno  <lethalman88@gmail.com>
1832         * SConstruct: use syx/syx-config.h instead of config.h
1834         * Added support for infinite-precision numbers
1836         * syx/syx-object.h (SYX_CLASS_FINALIZATION): added
1838         * syx/syx-object.c (syx_object_free): added object finalization
1839         (syx_large_integer_new): added
1840         (syx_large_integer_new_integer): added
1841         (syx_large_integer_new_mpz): added
1843         * syx/syx-types.h (SYX_SMALL_INTEGER): fixed small integer unpacking
1845         * syx/syx-interp.c (syx_interp_send_binary): use of syx_int32 for primitives
1846         (syx_inter_send_unary): idem
1848         * SConscript: fixed readline detecting
1850         * plugins/gtk/plugin-init.c (SYX_FUNC_PRIMITIVE): fixed according to previous objects refactoring
1852         * syx/syx-init.c (syx_fetch_basic): fetch CPointer class
1854 2007-07-09  Luca Bruno  <lethalman88@gmail.com>
1856         * syx/syx-parser.c (syx_parser_parse): push nil at the bottom of block context stack
1858         * st/kernel/String.st: added basic refinements
1860         * st/kernel/ByteArray.st: (byteAt:): added
1861         (byteAt:put:): added
1863         * syx/syx-primitives.c (ByteArray_at): return a small integer
1864         (ByteArray_at_put): require a small integer
1866         * syx/syx-init.h (SYX_INIT_MEMORY_SIZE): doubled initial memory size to 20000 objects
1868         * st/kernel/Bag.st: added
1870         * st/kernel/WriteStream.st: added
1872         * st/kernel/BlockClosure.st (value:value:): added
1874         * st/kernel/Dictionary.st (associationsDo:): added
1875         (do:): fixed to enumarate values
1876         (keysAndValuesDo:): added
1877         (keysDo:): added
1878         (select:, collect:, reject:): added for refinement
1880         * st/kernel/ArrayedCollection.st (select:, collect:, reject:): added for refinement
1882         * st/kernel/Collection.st (copyEmpty): added
1884         * syx/syx-parser.c (_syx_parser_parse_term): on error, print the expression if it's a string
1886         * st/kernel/IdentityDictionary.st: added
1888 2007-07-06  Luca Bruno  <lethalman88@gmail.com>
1890         * syx/syx-error.c (syx_error_init): what a missing static
1892         * st/kernel/Dictionary.st: subclass Collection and remove hashTable variable
1893         
1894         * Done an heavy refactoring to hold both instance variables and data into objects. Before this, an object could have only one of these two states.
1896         * syx/syx-object.c (syx_object_vars_size): added
1898         * st/kernel/SmallInteger.st (*): added temporarly to get rid of primitives for finding indexes
1900         * st/kernel/Set.st: added
1902         * st/kernel/SequenceableCollection.st (=): added
1904 2007-07-05  Luca Bruno  <lethalman88@gmail.com>
1906         == Released Syx 0.1.1 version ==
1908         * syx/syx-scheduler.c (_syx_scheduler_save): remove fd_sets from being written into the image
1909         
1910         * src/SConscript: fixed bdist command
1911         
1912         * st/kernel/Object.st (error:): added
1913         (doesNotUnderstand:): fixed to complain the standard
1915         * st/kernel/Dictionary.st (indexOf:): small but important fix
1916         (new): fixed initialization
1917         (initializeTable:): added
1919         * st/kernel/Signal.st (handlerContext): added
1920         (signal:): added
1921         (messageText): added
1922         (description): added
1923         (MessageNotUnderstood>>message:receiver:): added
1925         * syx/syx-primitives.c (Signal_findHandlerContext): removed
1927 2007-07-04  Luca Bruno  <lethalman88@gmail.com>
1929         * Added bdist command to create a binary distribution
1931         * Added method caching to unary and binary messages too
1932         
1933         * Implemented linear hash tables, similiar to double hash
1935         * st/kernel/SmallInteger.st (/): added temporarly
1936         (\\): added
1938         * st/kernel/Dictionary.st (at:): use hashing
1939         (at:put:): use hashing
1940         (indexOf:): added
1941         
1942         * syx/syx-object.c (syx_string_hash): added
1943         (syx_object_hash): fixed
1944         (syx_dictionary_at_symbol_put): renamed
1946 2007-07-03  Luca Bruno  <lethalman88@gmail.com>
1948         * st/kernel/Integer.st: added
1949         (bitAnd:): added
1950         (bitOr:): added
1951         (bitxor:): added
1953         * st/kernel/Number.st (between:and:): added
1954         (abs): added
1955         (negated): added
1956         (sign): added
1958         * st/kernel/SystemDictionary.st (at:put:): accept only symbol keys
1960         * st/kernel/ObjectMemory.st (snapshot:): was a bad bug
1962         * st/kernel/Collection.st: added some useful methods
1963         
1964         * syx/syx-primitives.c (FileStream_fileOp): fixed opening filenames
1966         * syx/syx-parser.c (_syx_parser_do_key_continuation): inlined whileFalse:
1968         * st/kernel/PositionableStream.st: added
1970         * st/kernel/Behavior.st: added subclassing
1972 2007-07-02  Luca Bruno  <lethalman88@gmail.com>
1974         == Released Syx 0.1 version ==
1976         * SConstruct: be able to run Syx in every location on Windows using
1977           relative paths
1978         
1979         * st/kernel/SequenceableCollection.st (at:ifAbsent:): added
1980         (after:): added
1981         (before:): added
1982         (copyFrom:to:): added
1984         * st/kernel/Collection.st (collect:): added
1985         (includes:): added
1986         (isEmpty): added
1987         (detect:ifNone:): added
1988         (occurrencesOf:): added
1989         (reject:): added
1990         (select:): added
1992         * st/kernel/True.st,False.st (& |): added
1994         * st/kernel/Object.st (copy): added with relative primitive Object_copy
1995         (isKindOf): added
1996         (isMemberOf): added
1998 2007-07-01  Luca Bruno  <lethalman88@gmail.com>
2000         * syx/syx-memory.c (syx_memdup): added
2002         * Fixed a big bug in block closures. Had to add a new bytecode to fix that
2003         
2004         * syx/syx-object.c (syx_object_copy): added
2006         * syx/syx-object.h (SYX_CLASS_SUBCLASSES): added instance variable to Behavior
2008         * syx/syx-memory.h (SYX_MEMORY_INDEX_OF): added
2010         * syx/syx-object.c (syx_object_hash): hash of small integers and characters are the oop itself. The hash of an object is its index in the object table
2011         (syx_array_remove): added
2012         (syx_array_add): added
2014         * syx/syx-error.c (syx_error_init): message not understoods are handled differently
2016         * st/kernel/Object.st (doesNotUnderstand). added (issue #2)
2018         * syx/syx-interp.c (syx_interp_send_unary): use syx_does_not_understand (issue #2)
2019         (syx_interp_send_binary): idem
2020         (syx_interp_send_message): idem
2021         (syx_interp_send_super): idem
2023         * syx/syx-error.h (syx_does_not_understand): added (issue #2)
2025         * syx/syx-init.c (_syx_file_in_basic): load Magnitude.st
2027         * src/main.c (_getopt_do): do not set the ImageFileName
2029         * syx/syx-primitives.c (Object_identifyHash): added
2031         * Added LargeNegativeInteger support
2033 2007-06-30  Luca Bruno  <lethalman88@gmail.com>
2035         * Reenstablished sequence of key/value pairs in hash tables
2037         * Done some changes to the Smalltalk code
2039 2007-06-29  Luca Bruno  <lethalman88@gmail.com>
2041         * syx/syx-primitives.c: added support for both positive and negative large integers
2042         
2043         * syx/syx-init.c (syx_quit): free initial paths
2045         * syx/syx-interp.h (SYX_PRIM_FAIL): fixed a big memory leak. Message arguments are freed by the interpreter, we need a new reference to them
2047         * syx/syx-interp.c (syx_process_execute_blocking): do not take care of yields
2048         (syx_exec_state_fetch): reset bytecodes count to stop execution of blocking processes
2050         * syx/syx-parser.c (_syx_parser_parse_term): support for large integers
2052         * syx/syx-types.h (SYX_SMALL_INTEGER_CAN_EMBED): added
2053         (SYX_SMALL_INTEGER_OVERFLOW): added
2055         * syx/syx-lexer.c (_syx_lexer_token_number): added support for large integers
2057 2007-06-28  Luca Bruno  <lethalman88@gmail.com>
2059         * syx/syx-primitives.c (SmallInteger_asFloat): added
2061         * Smalltalk: add number coercing, now you can do arithmetic between integers and floats
2063         * src/main.c (_help): added
2065         * Added sdist target to scons files to create a source distribution
2067         * Added the license to all files
2068         
2069         * syx/syx-interp.c (syx_interp_send_message): simple method caching
2070         (syx_interp_send_super): idem
2072         * syx/syx-bytecode.c (syx_bytecode_gen_message): create an unbound method reference
2074         * syx/syx-object.c (syx_dictionary_binding_at_symbol): renamed. Return an Association of key -> value to bind variables
2075         (syx_dictionary_binding_at_symbol_if_absent): idem
2076         (syx_dictionary_bind): added
2077         (syx_dictionary_bind_if_absent): added
2078         (syx_dictionary_bind_set_value): added
2079         (syx_class_lookup_method_binding): added
2080         
2081 2007-06-27  Luca Bruno  <lethalman88@gmail.com>
2083         * Fixed initializing the image path
2085         * SConstruct (win32 options): fixed image path
2086         (install): fixed st files installation
2088         * tests/testinterp.c (main): added tests for class variables
2090         * syx/syx-bytecode.c (syx_bytecode_push_global): renamed to push_binding_variable, so it can be used also for class variables
2091         (syx_bytecode_assign_binding_variable): added
2093         * syx/syx-parser.c (_syx_parser_parse_name_term): search for class variables
2095         * syx/syx-utils.c (_syx_cold_parse_names): added to be reused with class variables
2096         (_syx_cold_parse_class): added class variables
2098         * syx/syx-interp.c (syx_interp_push_global): push the value of the variable binding instead of looking up the symbol each time
2099         (syx_interp_push_global): renamed to push_binding_variable, to push class variables or globals
2101         * syx/syx-init.h (syx_globals_link_at): added
2103         * syx/syx-object.c: removed unused syx_dictionary_at_const and syx_dictionary_at_const_if_absent
2104         (syx_dictionary_new): hold Associations instead of a sequence of keys and values
2105         (syx_dictionary_link_at_symbol): added
2106         (syx_dictionary_link_at_symbol_if_absent): added
2108 2007-06-26  Luca Bruno  <lethalman88@gmail.com>
2110         * src/main.c (_getopt_do): added option -S to quit once built the image from scratch
2112         * src/SConscript (syx executable): create the default image once installed
2114         * SConstruct: added win32 installation with only a single root prefix
2116         * syx/syx-init.c (syx_quit): missed scheduler quitting
2118         * syx/syx-primitives.c (Semaphore_waitFor): added
2120         * syx/syx-scheduler.h (struct SyxSchedulerPoll): added
2122         * syx/syx-scheduler.c: added syncronized I/O multi-plexing with select during scheduling
2123         (syx_scheduler_poll_read_register): added
2124         (syx_scheduler_poll_write_register): added
2125         (syx_scheduler_quit): free allocated memory for read/write polls
2127         * plugins/readline/plugin-init.c (Readline_readline): free returned string
2129         * syx/SConscript (install): added includes
2131         * tests/testscheduler.c (main): added semaphores test
2133 2007-06-25  Luca Bruno  <lethalman88@gmail.com>
2135         * st/kernel/initialDecl.st (Semaphore): be fixed containing an array of waiting processes
2137         * syx/syx-object.h (SYX_SEMAPHORE_LIST): added
2138         (SYX_SEMAPHORE_SIGNALS): added
2140         * syx/syx-utils.c (syx_semaphore_wait): readded
2141         (syx_semaphore_signal): readded
2143         * syx/syx-object.c (syx_object_grow_by): changed to a macro
2144         (syx_object_resize): added
2146         * INSTALL: changed to reflect the Syx building system
2148 2007-06-24  Luca Bruno  <lethalman88@gmail.com>
2150         * SConstruct (install): remove Smalltalk files when uninstalling
2152         * syx/syx-object.c (syx_symbol_new): return nil if NULL is supplied
2153         (syx_string_new): idem
2155         * syx/syx-primitives.c (BlockClosure_asContext): fixed GC transaction
2156         (BlockClosure_valueWithArguments): idem
2157         (BlockClosure_newProcess): idem
2158         (BlockClosure_value): use nil instead of an empty array
2159         (BlockClosure_on_do): idem
2161         * syx/syx-interp.h (SYX_PRIM_ARGS): added to assert the number of arguments
2163         * Added install target
2164         
2165         * syx/syx-plugins.c (syx_plugin_call): load the plugin not loaded yet
2167         * syx/syx-error.h (syx_warning): added
2169         * src/main.c (_getopt_do): added error checks
2171 2007-06-23  Luca Bruno  <lethalman88@gmail.com>
2173         * src/main.c: added getopt
2175         * Added readline plugin
2177         * syx/syx-lexer.c (_syx_lexer_token_number): added exponent for floats
2179 2007-06-22  Luca Bruno  <lethalman88@gmail.com>
2181         * Doxyfile (LATEX_OUTPUT): added
2182         (OUTPUT): moved to build directory
2184         * Separated executable binaries from libraries by adding directory src
2185         
2186         * Now the build process is done in a separate directory named 'build'
2188         * Fixed scheduled processes
2190         * Added plugins support
2191         
2192         * Added a basic Gtk plugin for test
2194 2007-06-21  Luca Bruno  <lethalman88@gmail.com>
2196         * syx/syx-object.c (syx_object_new_size): alloc for byte size if object has no references
2198         * Use timeval to benchmark the tests
2200         * Removed SmallFloats and added only Floats. Therefore, SmallIntegers are again 31 bit wide
2202 2007-06-19  Luca Bruno  <lethalman88@gmail.com>
2204         * syx/syx-memory.c (syx_memory_load_image): fixed
2205         
2206         * syx/syx-platform.h: added
2207         
2208         * syx/syx-enums.h (SyxVariables): added Metaclass instanceClass
2209         
2210         * Smalltalk: added tracebacks and other stuff
2212 2007-06-18  Luca Bruno  <lethalman88@gmail.com>
2214         * syx/syx-parser.c (_syx_parser_parse_term): added negation
2216         * syx/syx-lexer.c (_syx_lexer_token_number): added radix numbers
2218         * Done a refactoring to use pointers instead of indexes for oops
2219         
2221 2007-06-17  Luca Bruno  <lethalman88@gmail.com>
2223         * syx/syx-primitives.c (Signal_findHandlerContext): fixed
2225         * syx/syx-error.h (syx_debug): added
2227         * syx/syx-utils.c (syx_send_message): added
2229 2007-06-15  Luca Bruno  <lethalman88@gmail.com>
2231         * Added floats
2233         * syx/syx-memory.c (syx_memory_load_image): do not add extra byte for strings
2234         (strndup): added if missing in other environments
2235         (memdup): same
2237         * SConstruct: added various options and organized for a better debugging
2239         * syx/syx-object.c (syx_string_new): add 1 to the size to hold NULL char
2240         (syx_symbol_new): same
2242         * syx/syx-interp.c (syx_interp_mark_arguments): do not alloc if not arguments are given.
2243         Fixed memory leaks.
2244         Do not pass the execution state trough parameters, instead keep it global.
2245         This would produce a better C/Smalltalk interface
2247         * st/kernel/ObjectMemory.st: adjusted
2248         
2249         * st/kernel/SystemDictionary.st (quit:): added with relative primitive
2251         * syx/syx-error.c: added
2252         
2253         * st/kernel/String.st (size): subtract 1 whith is the NULL char
2255 2007-06-14  Luca Bruno  <lethalman88@gmail.com>
2257         * Removed Glib dependency
2259         * Removed autotools replaced with Scons build system
2261 2007-06-13  Luca Bruno  <lethalman88@gmail.com>
2263         * Just work on Windows using MinGW
2265         * syx/syx-interp.c (syx_interp_send_message): if the message is unary don't create an empty array
2266         (syx_interp_send_super): same
2267         (syx_interp_send_unary): same
2269         * syx/syx-parser.h (struct SyxParser): renamed with starting _
2271         * syx/syx-scheduler.c (syx_scheduler_quit): fixed for now
2273         * Everything has been documented for Doxygen
2274         
2275         * syx/syx-scheduler.c (syx_scheduler_quit): rewrote after GMainLoop has been removed
2277         * syx/syx-bytecode.c (syx_bytecode_free): free_segment is not needed anymore
2279         * syx/syx-primitives.c (ArrayedCollection_replaceFromWith): added
2281         * syx/syx-memory.c (syx_memory_alloc): removed _syx_memory_top
2282         (syx_memory_init): removed _syx_memory_top and fill _syx_freed_memory_top. Realloc _syx_freed_memory too
2283         (syx_memory_free_all): removed, we can use syx_memory_clear
2285 2007-06-12  Luca Bruno  <lethalman88@gmail.com>
2287         * Everything we need to let the Console work men
2289         * syx/syx-utils.c (_syx_cold_parse_class): if superclass changed, we must update the metaclass too
2291         * syx/syx-lexer.c (_syx_lexer_token_symbol): fixed, now includes colons
2293         * tests/*: removed all memory leaks
2294         
2295         * st/kernel/Number.st (to:by:do:): added because needed by dictionary hash tables
2297         * st/kernel/False.st (or:): added
2299         * st/kernel/True.st (or:): added
2301         * st/kernel/Dictionary.st: added
2303         * syx/syx-primitives.c (syx_primitive_at_put): fixed index
2304         (syx_primitive_at): fixed index
2306 2007-06-11  Luca Bruno  <lethalman88@gmail.com>
2308         * syx/syx-memory.c (syx_memory_init): realloc only if memory must be larger
2309         (syx_memory_load_image): if we load an image over another one, be sure we free the previous data
2311         * syx/main.c (main): something new to try out
2313         * syx/syx-init.c (syx_build_basic): SYX_IS_OBJECT returns FALSE if it's a constant, so we have to set the class ourselves
2314         (syx_init_basic_streams): removed
2315         (syx_init_system): added, initialize the system from within Smalltalk itself
2317         * syx/syx-interp.c (syx_process_execute_blocking): don't schedule process if has no context to enter
2318         (syx_process_execute_scheduled): same
2320         * syx/syx-utils.c (syx_send_unary_message): added
2321         (syx_send_binary_message): added
2323         * syx/syx-parser.c (_syx_parser_parse_method_message_pattern): removed GString dependency to use a stack'd array
2324         (_syx_parser_do_key_continuation): same
2326         * syx/syx-parser.h (struct SyxParser): removed GTrashStack dependency
2328         * syx/syx-primitives.c (FileStream_fileOp): added and removed others
2330         * syx/syx-memory.h (syx_alloca): added
2331         
2332         * syx/syx-object.h (SYX_NIL, SYX_TRUE, SYX_FALSE): removed
2334         * syx/syx-bytecode.c (syx_bytecode_duplicate_at): fixed
2336 2007-06-10  Luca Bruno  <lethalman88@gmail.com>
2338         * syx/syx-init.h (syx_globals_at_if_absent): added
2340         * syx/syx-object.c (syx_dictionary_at_const_if_absent): added
2341         (syx_dictionary_at_symbol_if_absent): added
2342         (syx_dictionary_at_symbol): raise an error if the key has not been found
2343         (syx_dictionary_at_const): same
2345         * syx/syx-parser.h (struct SyxParser): removed GPtrArrays and added regular stacks for temporary and argument names
2347         * syx/syx-object.c (syx_symbol_new): increase size to hold '\0'
2348         (syx_string_new): increase size to hold '\0'
2350         * tests/testimage.c: added
2352         * syx/syx-interp.c: use transactions when creating new method contexts
2354         * syx/syx-memory.c (syx_memory_clear): added, do the inverse of syx_memory_init
2355         (syx_memory_free_all): added, free all objects except nil, true and false
2356         (syx_memory_save_image): added
2357         (syx_memory_load_image): added
2358         (syx_memory_init): now specify how many objects must be allocated in the heap
2360         * syx/syx-init.c (syx_build_basic): splitted to own only image building process
2361         (syx_quit): added
2362         (syx_fetch_basic): added by splitting syx_build_basic. This function will be used also when loading the image
2364 2007-06-08  Luca Bruno  <lethalman88@gmail.com>
2366         * syx-primitives.c (BlockClosure_newProcess): ovverride parent context with nil
2368 2007-06-07  Luca Bruno  <lethalman88@gmail.com>
2369             
2370         * syx-scheduler.c, syx-interp.c: fixed the process scheduler
2371         
2372         * syx-interp.c (syx_interp_do_primitive): removed
2373         * syx-interp.c (syx_interp_call_primitive): added
2374         * syx-primitives.c (SYX_PRIM_FAIL): added
2375         * syx-primitives.c (SyxPrimitiveFunc): added the method containing the primitive call as argument
2376         * syx-scheduler.c (syx_processor_first_process): added
2377         Added as instance variable
2379         * syx-primitives.c (BlockContext_asContext, BlockContext_valueWithArguments): copy the array to avoid memory leaks
2380         * syx-object.h (SYX_METHOD_PRIMITIVE): added
2381         * syx-interp.c, syx-parser.c: removed do_primitive bytecode to
2382         inline primitive calls
2384 2007-06-05  Luca Bruno  <lethalman88@gmail.com>
2386         * syx-bytecode.c (syx_bytecode_unary_messages, syx_bytecode_binary_messages): used to avoid memory allocation for well known symbol literals
2387         * syx-bytecode.c (syx_bytecode_gen_message): finds any occurrence of the given message into known symbols
2388         All calls have been updated
2389         * syx-interp.c (syx_interp_send_unary, syx_interp_send_binary): handles and send a common message
2391         * syx-object.c: removed is_static field not needed at the moment
2392         All parts have been updated
2393         * syx-init.c (_syx_create_class): changed from FALSE to TRUE the value to be put in has_refs (was a bad mistake)
2394         * syx-memory.c (syx_memory_gc): added some debugging informations
2395         * syx-memory.c (syx_memory_gc_begin, syx_memory_gc_end): added for creating GC transactions
2396         * syx-bytecode.c (syx_bytecode_gen_instruction): generate 16 bit-wide instructions
2397         All calls to it and the interpreter have been updated
2399 2007-06-04  Luca Bruno  <lethalman88@gmail.com>
2401         * configure.ac: removed -pedantic since we use bitfields that are a GCC extension
2402         * Everything has been refactored using SyxOop instead of working on raw pointers. This can be slower but allows all platforms (32bit or 64bit) to access the memory by indexes
2404         * syx-interp.c (syx_interp_leave_context_and_answer): removed an argument because the return context has been inserted into method contexts
2405         * syx-interp.c (syx_interp_send_message): fixed message arguments array creation
2406         * syx-object.c (syx_byte_array_*): added
2407         * syx-object.c (syx_*_context_new): copy arguments to the context arguments stack
2408         * syx-object.h (SYX_METHOD_CONTEXT_RETURN_CONTEXT): moved from block contexts for speed matters
2409         * syx-object.h (SYX_BLOCK_ARGUMENTS_TOP): holds the index to the arguments stack
2410         * syx-object.h (SYX_PROCESSOR_SCHEDULER_*): old mistake SYX_PROCESS_SCHEDULER
2411         * syx-primitives.c (SmallInteger_*): bug fix
2412         * syx-parser.c (_syx_parser_parse_block): now operate on the same parser instead of creating a new one, to share arguments and temporaries
2413         * syx-parser.c (syx_parser_new): removed last two arguments, not needed anymore because of shared scopes
2414         * syx-parser.c (syx_parser_parse): store bytecodes as a ByteArray
2415         * syx-parser.c (_syx_parser_find_*): return -1 instead of 0 since syx_varsize now is not unsigned anymore
2416         * syx-parser.h (SyxParserScope, SyxParserScopeStack): added to share arguments and temporaries between methods and nested blocks
2417         * syx-memory.c (syx_memory_alloc): call syx_memory_gc once the heap is full
2418         * syx-types.h (SYX_IS_POINTER): fixed
2419         * syx-init.c (syx_build_basic): added syx_byte_array_class
2421 2007-06-03  Luca Bruno  <lethalman88@gmail.com>
2423         * syx-memory.c (syx_memory_gc): added a basic implementation of a mark and sweep garbage collector
2424         * syx-memory.c (syx_memory_get_heap): added function
2425         * syx-memory.c (syx_memory_get_heap_size): added function
2426         * syx-utils.c (syx_path_join): removed
2428         * syx-object.c (SyxObject): added is_static, has_refs and is_marked bitfields to use for garbage collection with relative macro accesses
2429         * syx-types.h (syx_varsize): small integers can hold only signed ints
2430         * syx-memory.c (syx_memory_get_heap): added function
2431         * syx-memory.c (syx_memory_free): added function
2432         * syx-utils.c (syx_path_join): fixed possible memory leaks
2433         Calls to syx_object_new* have been fixed
2435         * Added a TODO file
2436         * syx-utils.c (syx_path_join): some stylistic fixes
2438         * Added Doxygen documentation
2440         * syx-types.h: defining TRUE and FALSE booleans when not defined (e.g. when not including glib.h)
2441         * syx-types.h (SYX_SMALL_INTEGER): use double shifting instead of AND/INVERT
2442         * syx-object.c (syx_class_lookup_method): added function and removed the issued macro
2443         * syx-utils.c: removed GError when not needed
2444         * syx-init.c: removed unused GHashTable
2445         * syx-interp.c (syx_exec_state_free): added inline function
2446         * syx-interp.c (syx_exec_state_save): fixed saving the execution state of a process
2447         * Removed all G_BEGIN_DECLS / G_END_DECLS to make use of Doxygen
2449 2007-06-01  Luca Bruno  <lethalman88@gmail.com>
2451         * configure.ac: override standard CFLAGS
2452         * syx-object.c (syx_dictionary_at_symbol_put): return once we found the right place to put the data
2453         * syx-object.c (syx_metaclass_new, syx_class_new): avoid nil values to speed up lookups
2454         * syx-object.c (syx_symbol_new): put the symbol itself instead of SYX_TRUE
2455         * syx-enums.h (SyxTokenType): put string-based token types at the end so that syx_token_free can free strings
2456         * syx-lexer.h: Added SyxToken structure to get rid of GValue
2457         * syx-lexer.c: removed GValue dependency and Glib ascii functions usage
2458         Renamed all static functions
2459         All parts of Syx have been updated with the new behavior of the lexer, including the parser and the tests
2460         * syx-lexer.c (syx_lexer_free): added function
2461         * syx-lexer.c (syx_token_free): added function
2462         * syx-bytecode.c (syx_bytecode_free): added function
2463         * syx-parser.c (syx_parser_free): added function
2464         Renamed all static functions.
2465         * syx-utils.c: completely refactored without using Glib
2466         * syx-utils.h: removed G_VALUE_STRCMP
2467         * Replaced all g_strcasecmp and g_strdup with strcmp and strdup
2468         * syx-init.c (syx_init): removed g_type_init, we do not need GObject for GValue anymore
2469         * st/kernel/initialDecl.st: fixed instance variables according to syx-enums.h
2470         * syx-memory.c (syx_freev): new function to free NULL terminated arrays
2471         * syx-memory.c (_syx_memory): moved from static to dynamic
2472         * syx-memory.c (syx_memory_free): removed because of future garbage collector
2473         * syx-memory.h (SyxMemoryLink): removed with syx_memory_free
2474         * syx-types.h (syx_small_integer_new, syx_character_new): be sure we work on a long before doing bitwise operations
2475         * syx-types.h (syx_char): added type
2476         * syx-types.h (syx_size): changed from unsigned long to long according to standard size_t
2477         Removed lots of Glib memory related dependencies.
2478         Recovered a bunch of memory leaks