0.1.7 version released
[syx.git] / ChangeLog
blob9b401f51cca6944f2deb8deb5d629920e0b64f59
1 2008-06-07  Luca Bruno  <lethalman88@gmail.com>
3         == Released 0.1.7 version ==
5         * syx/syx-platform.h (EXPORT): this fixes Mac OSX link errors against _syx_interp_state
7 2008-06-06  Luca Bruno  <lethalman88@gmail.com>
9         * src/main.c (_parse_args): startupSystem on WinCE too
11 2008-06-05  Luca Bruno  <lethalman88@gmail.com>
13         * syx/syx-primitives.c (Semaphore_waitFor): fixed Windows part
15 2008-06-04  Luca Bruno  <lethalman88@gmail.com>
17         * plugins/wingui/plugin-init.c (WndProcedure): fixed for new interpreter
19         * st/kernel/FileStream.st (handle): added
21         * st/kernel/Semaphore.st (waitForWrite, waitForRead): directly use the handle
23         * syx/syx-primitives.c (Semaphore_waitFor): explicitely use GetStdHandle
25 2008-06-02  Luca Bruno  <lethalman88@gmail.com>
27         * plugins/readline/SConscript: on some systems -lsyx is required for building plugins with SCons
29         * configure.ac: create syx.pc
31         * Makefile.am: install syx.pc
33         * syx.pc.in: added
35 2008-06-01  Luca Bruno  <lethalman88@gmail.com>
37         * plugins/x11/Xlib_wrap.c: regenerated for comments and new SWIG macros
39         * plugins/x11/geninterface.sh: added
41         * plugins/gtk/gtk_wrap.c: added comments and removed Gdk threading
43         * plugins/gtk/gobject.i: ignore non-public API
45         * plugins/readline/SConscript: updated for installing Smalltalk sources
47         * SConstruct: updated
49         * doc/Makefile.am: install manpages
51         * doc/manual/language.texi (Block closures): fixed typo
53         * doc/Makefile.am: fixed making documentation
55         Prepared NEWS file
57         * examples/x11: adjusted the example
59         * syx/syx-scheduler.c (_syx_scheduler_find_next_process): check for a valid activeProcess
61         * plugins/gtk/st/GObject.st (when:do:, when:do:send:): accept symbols as signal name
63         * syx/syx-scheduler.c (syx_scheduler_poll_unregister_source): fix re-entrancy troubles
64         (_syx_scheduler_poll_wait): fix re-entrancy troubles
66         * plugins/gtk/st/Gtk.st (main): use the semaphore
68         * plugins/gtk/plugin-init.c: save the semaphore
70         * plugins/gtk/st/GObject.st: moved GCallback here and splitted into GMethodCallback and GBlockCallback
72         * plugins/gtk/plugin-init.c (syx_g_closure_marshal): pass the arguments and be gc-safe
73         (Gtk_mainQuit): remove the idle Process and yield the control
75 2008-05-30  Luca Bruno  <lethalman88@gmail.com>
77         * syx/syx-primitives.c (Smalltalk_pluginCall): forgot to pass the failing method
79         * examples/embedding/add.c: fixed to use newinterp API
81         Use #display and #displayNl when possible.
82         
83 2008-05-29  Luca Bruno  <lethalman88@gmail.com>
85         * st/kernel/String.st (displayOn): added
87         * st/kernel/Object.st (display, displayNl, displayString, displayOn:): added
89 2008-05-28  Luca Bruno  <lethalman88@gmail.com>
91         * syx/syx-scheduler.c (syx_scheduler_remove_process): let's run the next process of the activeProcess
93         * syx/syx-interp.c (syx_process_execute_blocking): unschedule the process at the end
95         * syx/syx-memory.c (syx_memory_save_image): activeProcess can be nil
97         * tests/testscheduler.c (main): no need to clear the scheduler anymore
99         * src/main.c (_parse_args): startup the system from here
101         * syx/syx-init.c (syx_build_basic): drop responsibility to startup the system for embedding purposes
103         * syx/syx-scheduler.c (syx_scheduler_remove_process): fix when the process is the active process
105         * syx/syx-plugins.c (syx_plugins_quit): fixed when building without plugins
106         (syx_plugins_init): fixed when building without plugins
108         * doc/manpage/syx.1: updated
110         * doc/manual/introsyx.texi (Invoking syx): updated
112         * syx/syx-init.c (syx_set_root_path): use SYX_ROOT_PATH
114         * doc/manpage/syx.1: updated
116         * doc/manual/introsyx.texi (Invoking syx): updated
118         * syx/syx-plugins.c (syx_plugins_init): fixed
119         (syx_plugin_load): try all possible plugin paths
121         * syx/syx-platform.h (SYX_ENV_PATH_SEPARATOR_S): added
123         * syx/syx-plugins.h:
125         * syx/syx-plugins.c: split plugin paths
126         (syx_plugins_init): implemented
127         (syx_plugins_quit): added
129         * syx/syx-platform.h (SYX_ENV_PATH_SEPARATOR): added
131         * syx/syx-init.c (syx_quit): use plugins_quit
133 2008-05-27  Luca Bruno  <lethalman88@gmail.com>
135         * syx/syx-primitives.c (Semaphore_waitFor):
137         * SConstruct: cleaned
139         * syx/SConscript:
141         * syx/syx-primitives.c (FileStream_fileOp): can use symbols
143         * st/kernel/FileStream.st (fileno): added
144         (handleForSemaphore): removed
146 2008-05-26  Luca Bruno  <lethalman88@gmail.com>
148         * syx/syx-scheduler-posix.c (_syx_scheduler_load): dropped implementation
149         (_syx_scheduler_save): dropped implementation
151         * syx/syx-scheduler.h: changed add_process and remove_process signatures
153         * syx/syx-scheduler.c (_syx_scheduler_find_next_process): do a simpler round robin
154         (syx_scheduler_add_process, syx_scheduler_remove_process): 
156         * syx/syx-object.h (SYX_PROCESSOR_SCHEDULER_FIRST_PROCESS): removed
158         * syx/syx-memory.c (syx_memory_save_image): store the round robin
160         * syx/syx-enums.h (SYX_VARS_PROCESSOR_SCHEDULER_FIRST_PROCESS): removed
162         * st/kernel/initialDecl.st (ProcessorScheduler): removed firstProcess instance variable
164 2008-05-24  Luca Bruno  <lethalman88@gmail.com>
166         * syx/SConscript: fix scheduler choice
168         * syx.vcproj: add scheduler-win
170         * makefile.vc (OBJS): compile syx-scheduler-win
172         * plugins/readline/plugin-init.c (syx_plugin_initialize): 
174         * plugins/readline/st/Readline.st: added
176         * plugins/readline/Makefile.am:
178         * st/kernel/Console.st: dropped readline
180 2008-05-23  Luca Bruno  <lethalman88@gmail.com>
182         * syx/syx-memory.c (_syx_memory_write): nullify C pointers to avoid bad accesses on next startup
183         
184         * syx/syx-error.c (syx_signal): forgot to readd the old code
186         * configure.ac (WIN32): added conditional
188         * syx/SConscript:
190         * syx/Makefile.am (libsyx_la_SOURCES):
192         * syx/syx-scheduler.c: splitted platform code
194         * syx/syx-scheduler-win.c (_syx_scheduler_init_platform): added
196         * syx/syx-scheduler-posix.c (_syx_scheduler_init_platform): added
198         * TODO (Major):
200         * syx/syx-scheduler.c (syx_scheduler_poll_write_register): updated
202         * syx/syx-scheduler.h: 
204         * syx/syx-scheduler.c (_syx_scheduler_find_next_process): 
206         * plugins/gtk/plugin-init.c (syx_g_closure_marshal): use iterate
208         * syx/syx-scheduler.c (syx_scheduler_iterate): added
209         
210 2008-05-22  Luca Bruno  <lethalman88@gmail.com>
212         * 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
214         * plugins/gtk/plugin-init.c (_syx_gtk_iteration): replaced _syx_gtk_main
215         (syx_g_closure_marshal): do it without threads and in a single process
216         (Gtk_main): register an idle and save the process where to put main loop callback executions
217         (Gtk_mainQuit): register an idle and save the process where to put main loop callback executions
219         * syx/syx-object.h (syx_semaphore_new): added
221         * syx/syx-scheduler.c (syx_scheduler_poll_register_source): added
222         (syx_scheduler_poll_unregister_source): added
223         (_syx_scheduler_poll_wait): check for sources
225         * plugins/gtk/st/GObject.st: move gobject related classes here
227         * plugins/gtk/plugin-init.c (syx_plugin_initialize): non-cold loading and change the loading order
229         * st/kernel/FileStream.st (handleForSemaphore): added
231         * st/kernel/Semaphore.st (waitForWrite, waitForRead): updated
233         * st/kernel/Console.st (nextLine): updated
235         * syx/syx-primitives.c (fileOp): add fileno
236         (Semaphore_waitFor): updated
238 2008-05-20  Luca Bruno  <lethalman88@gmail.com>
240         * syx/syx-signal.c (_syx_smalltalk_sighandler): register signals again
242         * st/kernel/Console.st (registerUserInterruptHandler): added
244         * st/kernel/SystemSignal.st: request for being initialized at every startup
246         * syx/syx-init.c (_syx_file_in_basic):
248         * syx/syx-error.c (syx_signal): execute a blocking process for system signals
250         * syx/syx-enums.h (enum):
252         * st/kernel/Signal.st: generalized and separated Exception by SystemSignal
254         * st/kernel/SystemSignal.st: added
256         * st/kernel/initialDecl.st: add HandlerBlock instance variable to both UserInterrupt and TerminationSignal
258         * syx/syx-signal.c (_syx_smalltalk_sighandler): use syx_signal
260         * syx/syx-error.c (syx_error_init): register new errors for system signals
262         * syx/syx-enums.h (SyxErrorType):
264         * st/kernel/Console.st: quit on system signal
266 2008-05-19  Luca Bruno  <lethalman88@gmail.com>
268         * syx/syx-error.c: simplified and fixed memory leak
270         * syx/syx-memory.c (_syx_memory_gc_mark): only mark the used part of the stack
271         (syx_memory_gc): save the process state
272         (syx_memory_save_image): 
274 2008-05-18  Luca Bruno  <lethalman88@gmail.com>
276         * syx/syx-scheduler.c (_syx_scheduler_find_next_process):
278         * st/kernel/Console.st (nextLine): use the semaphore
280         * syx/syx-object.c (syx_semaphore_wait): moved from syx-utils
281         (syx_semaphore_signal): moved from utils
283         * syx/syx-scheduler.c (_syx_scheduler_process_poll): added. Clear the handled FD from the set.
284         (_syx_scheduler_poll_wait):
286         * doc/manual/inheritance.texi: not yet complete
288         * syx/syx-object.c (syx_symbol_new): make a SmallInteger
290         * syx/syx-object.h (syx_symbol_hash): added
292         * st/kernel/Symbol.st (hash): use the cached hash variable
294         * syx/syx-object.c (syx_symbol_new): cache the hash
295         (syx_dictionary_index_of): wants the hash of the symbol key
296         All calls have been updated. This leads to dropping about 8% of executed instructions.
298         * syx/syx-enums.h (enum): 
300         * st/kernel/initialDecl.st: add hash variable
302         Updated copyright and bumped version number to 0.1.7.
304 2008-05-17  Luca Bruno  <lethalman88@gmail.com>
306         * doc/manual/varscope.texi: begun work
307         maybe complete for now
309         * st/kernel/Console.st: only print last object when a block is executed
311         * src/main.c: convert to UNIX
313         * 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.
315         * st/kernel/SystemDictionary.st (initializeSystem): startupProcess is saved inside the VM
317         * syx/syx-memory.c (_syx_memory_gc_mark): complete marking of detached frames
319 2008-05-16  Luca Bruno  <lethalman88@gmail.com>
321         * doc/manual/blocks.texi (Loops): completed
323 2008-05-15  Luca Bruno  <lethalman88@gmail.com>
325         * syx/syx-interp.c (syx_interp_enter_context): do not really switch the process
326         (_syx_interp_state_update): checks must be done before calling the method
327         (_syx_interp_switch_process): checks must be done before calling the method
328         (syx_interp_swap_context):
329         (syx_process_execute_scheduled): checks have to be done before calling the method
331         * syx/syx-memory.c (_syx_memory_write_process_stack): fixed warnings
333         * syx/syx-interp.h: add missing interp functions
335         * syx/syx-interp.c (_syx_interp_execute_byte): remove rarely used branch
336         (syx_interp_do_extended): added
337         (syx_interp_mark_arguments):
339 2008-05-13  Luca Bruno  <lethalman88@gmail.com>
341         * doc/manual/blocks.texi (Return value of blocks): added
342         (Conditions): added
344         * doc/manual/language.texi (Comments): added
346 2008-05-11  Luca Bruno  <lethalman88@gmail.com>
348         * doc/manual/commonobjects.texi: filled in but not complete
350         * doc/manual/varscope.texi: added
352         * doc/manual/commonobjects.texi: added
354         * doc/manual/blocks.texi: added
356         * doc/manual/variables.texi: completed
358         * doc/manual/streference.texi (Dictionaries): added
360         * doc/manual/variables.texi: added
362         * doc/manual/methods.texi: added
364         * doc/manual/messages.texi: added
366         * doc/manual/objects.texi: added
368         * doc/manual/language.texi: 
370 2008-05-10  Luca Bruno  <lethalman88@gmail.com>
372         * doc/manual/language.texi: added
374         * syx/syx-memory.c (_syx_memory_write_process_stack): store stack if the first frames are detached
375         (_syx_memory_write_process_stack): check if the stack has been already wrote
376         (_syx_memory_read): read first detached frames
377         (syx_memory_load_image): first fix pointers
379         * syx/syx-types.h:
381 2008-05-07  Luca Bruno  <lethalman88@gmail.com>
383         * doc/manual/introsyx.texi (Invoking syx): documented
385 2008-05-06  Luca Bruno  <lethalman88@gmail.com>
387         * syx/syx-interp.c (syx_interp_context_to_frame): add check
389         * syx/syx-memory.c (_syx_memory_write_frame): save all the stack from locals to the upper frame
390         (_syx_memory_read_lazy_pointer): missing big endian compatibility, rename idx to data
391         (_syx_memory_write_lazy_pointer): give precedence to detached frames
393 2008-05-04  Luca Bruno  <lethalman88@gmail.com>
395         * syx/syx-memory.c (_syx_memory_write_frame): receiver is not only an object
396         (_syx_memory_read_process_stack): 
398         * syx/syx-scheduler.c (syx_scheduler_add_process): run the given process just after the active process
399         (syx_scheduler_init): set default timeslice to 100
401         * syx/syx-memory.c (enum): rename _BOS to _BOF
402         All calls have been updated.
403         
404 2008-05-02  Luca Bruno  <lethalman88@gmail.com>
406         * doc/manpage/syx.1: added
407         
408         * doc/Makefile.am: added
409         add doc target
411         * configure.ac:
412         
413         * doc/manual/introsyx.texi: splitted from syx.texi
415         * doc/manual/syx.texi (Introducing the Syx environment): basic Strings
416         (What is Smalltalk): Image concept
417         (Index): added Classes and Methods
419         * syx/syx-memory.c (syx_memory_save_image): unmark the object being skipped
420         (_syx_memory_write_object_with_vars): ensure the stack
421         (_syx_memory_write_vars_with_fp): take care of detached frames
423         * syx/syx-scheduler.c (syx_scheduler_remove_process): always check for active process
425         * syx/syx-lexer.c (_syx_char_is_binary_second): temporarly removed '-'
427         * syx/syx-parser.c: support <- assignment
429         * syx/syx-memory.c (_syx_memory_write_frame): fix stack pointer
430         (_syx_memory_write_lazy_pointer): fix on NULL process
432 2008-05-01  Luca Bruno  <lethalman88@gmail.com>
433     
434         * doc/manual/syx.texi: added license informations and a brief introduction, renamed from .texinfo
435         (Introducing the Syx environment): moved up
436         (Index): add menu and Concepts section
437         Added some concepts.
438         (Programs): added
439         (Introducing the Syx environment): started some docs
441         * doc/manual/fdl-1.2.texi: added
443         Create reference to doc/reference.
444         Add doc/manual.
446         * doc/manual/syx.texinfo: added
448         * syx/syx-memory.c:
449         (syx_memory_save_image): only store the stack of each process
450         (_syx_memory_write_process_stack): fixed beginning and end of frames
451         
452         * syx/syx-memory.c:
453         (_syx_memory_gc_mark): mark detached frames
455         * syx/syx-memory.c:
456         Fix lazy pointers.
457         Fix BOS/EOS sequence for writing and reading.
458         Store block closures that are not attached to any process.
459         Save processes before any other object.
461 2008-04-27  Luca Bruno  <lethalman88@gmail.com>
463         * syx/syx-memory.c (_syx_memory_write_frame): only write arguments and temporaries for detached frames
464         (_syx_memory_write_process_stack): check for collected stacks, store the index of the frames
465         (_syx_memory_read_process_stack): seek back by one
467         * syx/syx-interp.c (syx_inter_push_block_closure): only copy arguments and temporaries
469 2008-04-26  Luca Bruno  <lethalman88@gmail.com>
471         Do not seek the file, instead read frames as is: this makes the image smaller.
472         Mark beginning and end of whole stacks instead of single frames.
473         Fix reading of frame fields when loading the image.
474         
475         * syx/syx-memory.c (_syx_memory_read): use _read_lazy_pointer and start using to read the process stack
476         (_syx_memory_write_process_stack): store everything in reverse order but saving the index of each frame
478         * syx/syx-memory.c (syx_memory_save_image): skip if object is marked
479         (_syx_memory_gc_sweep): unmark constants
481         * syx/syx-memory.c (_syx_memory_write_object_with_vars): added
482         (_syx_memory_write_lazy_pointer): added
483         (_syx_memory_write_frame): added
484         (_syx_memory_write_process_stack): added
485         (syx_memory_save_image): save the process state before doing any operation
486         (_syx_memory_read_lazy_pointer): added
487         (_syx_memory_read_process_stack): added
489 2008-04-25  Luca Bruno  <lethalman88@gmail.com>
491         * syx/syx-memory.c (struct SyxMemoryLazyPointer): added
492         (enum SyxMemoryType): rename RAW to IMMEDIATE and FP to FRAME_POINTER
494         * syx/syx-memory.c (_syx_memory_read): read framePointer variables
495         (syx_memory_load_image): free lazy pointers
497 2008-04-23  Luca Bruno  <lethalman88@gmail.com>
499         * syx/syx-memory.c (enum SyxMemoryType): added
500         (_syx_memory_write_vars_with_fp): added
501         (_syx_memory_read): added incomplete handler for frame pointers
502         (syx_memory_load_image):
504         * syx/syx-interp.h:
506         * syx/syx-interp.c (_syx_interp_context_update): removed
507         (syx_interp_frame_to_context): use frame pointer as an index
508         (_syx_interp_switch_process):
509         (syx_interp_frame_to_context): need the stack
511         * syx/syx-primitives.c (ContextPart_parent):
512         (ContextPart_parent):
514         * st/kernel/initialDecl.st (ContextPart): add process variable
516         * syx/syx-enums.h:
518         * syx/syx-signal.c (_syx_save_recovered_image): 
520         * src/main.c (_do_recovery): 
522 2008-04-22  Luca Bruno  <lethalman88@gmail.com>
524         * tests/testinterp.c (main): added another ensure test
526         * st/kernel/Signal.st (handlerContextStartingFrom): added
527         (signal): use a more sane approach
528         (handlerContext):
530         * syx/syx-interp.c (syx_interp_do_special): fix block self return
531         (syx_interp_swap_context): implemented
533 2008-04-21  Luca Bruno  <lethalman88@gmail.com>
535         * syx/syx-interp.c (_syx_interp_context_update): added
536         (syx_interp_push_block_closure): update this_context to point to the new detached frame
537         (syx_interp_frame_to_context): set arguments not accessible for now, not good for Smalltalk-side future debugging
538         This fixes basic of the exception handling.
540 2008-04-20  Luca Bruno  <lethalman88@gmail.com>
542         * st/kernel/Number.st (to:by:do, to:by:reverseDo): slightly optimized
544         * syx/syx-primitives.c (Processor_enter): wrong argument
545         (Processor_swapWith): wrong argument
547         * syx/syx-interp.c (syx_interp_enter_context): missed saving this_context
548         (syx_interp_context_to_frame): added
550         * syx/syx-primitives.c (ContextPart_receiver): added
551         (BlockContext_outerContext): added
553         * st/kernel/BlockContext.st (outerContext, homeContext): 
555         * st/kernel/ContextPart.st (tracebackString):
557         * syx/syx-interp.h (struct SyxInterpFrame): add closure
559         * syx/syx-object.h: updated accessors
560         All calls have been updated.
562         * syx/syx-enums.h (enum): add ContextPart enums
564         * st/kernel/initialDecl.st: move receiver to MethodContext and add framePointer to ContextPart
566         * syx/syx-interp.c (syx_interp_frame_to_context): made public
567         (syx_interp_frame_to_context): use closure
569         * syx/syx-primitives.c (_syx_primitive_entries):
570         (ContextPart_parent): added
572         * syx/syx-parser.c (_syx_parser_find_temporary_name): cleaned up, fixes the command line interactive interpreter
574         * st/kernel/Console.st (nextLine):
576         * syx/syx-interp.c (_syx_interp_switch_process): only switch if it's a different process
578         * syx/syx-interp.h (struct SyxInterpState): added process
579         All calls have been updated to use this new member.
581         All tests now works just like the trunk. Have to do more work on the scheduler, though.
582         
583         * syx/syx-interp.h (struct SyxInterpState): removed process_frame
585         * syx/syx-object.c (syx_process_new): initialize bottome frame
587         * syx/syx-primitives.c: updated to match new interpreter internal API
588         
589         * syx/syx-interp.c (_syx_interp_switch_process): fix fetching the frame
590         Refactor most of the functions to request state/process arguments to work concurrency
591         on different processes and execution states.
592         Claned up everything, yet another slightly speedup.
593         All calls have been updated.
595 2008-04-18  Luca Bruno  <lethalman88@gmail.com>
597         * syx/syx-parser.c (_syx_parser_find_temporary_name): fixes issue #29
599         * tests/testinterp.c (main): test block recursion (see issue #29)
601         * syx/syx-interp.c (_syx_interp_switch_process): do not save the process state
603         * syx/syx-parser.c (_syx_parser_parse_optimized_block): fix memory leak
605         * syx/syx-interp.c (syx_interp_enter_context): save process state
606         (_syx_interp_switch_process): always switch process
608         * syx/syx-init.c (syx_initialize_system): 
610 2008-04-16  Luca Bruno  <lethalman88@gmail.com>
612         * syx/syx-primitives.c (BlockClosure_valueWithArguments): forgot part of the implementation
613         (Compiler_parse): fix memory leak
615         * 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
617         * syx/syx-object.c (syx_process_new): reset frame pointer
619         * syx/syx-interp.c (_syx_interp_switch_process): really switch process
621         * syx/syx-parser.c (syx_parser_new): do not erase scopes
623 2008-04-15  Luca Bruno  <lethalman88@gmail.com>
625         * syx/syx-interp.h (struct SyxInterpFrame): add detached_frame
627         * syx/syx-interp.c (_syx_interp_frame_to_context): copy the arguments
628         (syx_interp_push_block_closure): detach the current frame
630         * syx/syx-object.h (syx_string_new_unref): renamed from syx_string_new_ref
632         * configure.ac: use -g3 for info and full debug modes
634         * syx/syx-interp.h (SYX_PRIM_FAIL): a lot semplified
636         * syx/syx-parser.c (_syx_parser_find_temporary_name): fix variable name resolution for optimized blocks
638         * syx/syx-interp.c (syx_process_execute_scheduled): usually next instruction is not bigger than the bytecodes count until the end of the process
639         (syx_process_execute_blocked): same here
640         (syx_interp_leave_and_answer): clear the frame
642         * syx/syx-parser.c (_syx_parser_parse_optimized_block): do not create a new scope but share variables with the outer context
644 2008-04-14  Luca Bruno  <lethalman88@gmail.com>
646         * syx/syx-parser.c (_syx_parser_parse_optimized_block): increase method temporary stack to hold optimized block temporaries
648         * syx/syx-interp.c (_syx_interp_find_temporary): forgot to change the code when copied find_argument
649         (_syx_interp_find_argument): fixed
651         * syx/syx-interp.h (syx_interp_stack_peek): fix
653         * syx/syx-parser.c (_syx_scope_free): added
654         (syx_parser_free): fix leak
655         Clear scope tops.
657         * syx/syx-interp.h (struct SyxInterpFrame): removed ensure_block
659         * st/kernel/Set.st: forgot header
661         * syx/syx-interp.c (_syx_interp_find_temporary): added
662         (_syx_interp_find_argument): added
663         (_syx_interp_state_update): obtain syx_uint16 bytecodes
664         (_syx_interp_frame_prepare_new): frame receiver not filled in
665         (syx_interp_do_special): get ensure block from the context, if available
667 2008-04-13  Luca Bruno  <lethalman88@gmail.com>
669         * syx/syx-error.c (syx_signal_does_not_understand): stop being a macro
671         * tests/testparser.c (main): updated
673         * syx/syx-parser.c: fix argument and temporary search
675         * syx/syx-utils.c: more info on method lookup failure
677         * syx/syx-interp.c (_syx_interp_switch_process): wrong way to get the process frame bottom
678         (syx_interp_enter_context): be sure we have a frame
679         (_syx_interp_frame_prepare_new): be aware of null frames and null stack pointers
681         * syx/syx-enums.h: update VM-used variable names
683         * st/kernel/initialDecl.st: variables have been updated to match interpreter implementation
685         * syx/syx-primitives.c: incredibly cleaned up block messages
687         Lots of changes to the interpreter and the parser.
688         Arguments and temporaries of blocks won't be put into the same stack of the home method.
689         Changed the way of dealing with contexts and processes.
690         The interpreter won't create any context except the ones demanded outside of it.
691         All contexts informations are now kept inside the process stack.
693 2008-02-20  Luca Bruno  <lethalman88@gmail.com>
695         * syx/syx-object.h (syx_string_new_ref): renamed from syx_string_new_unref
696         All calls have been updated
698         * plugins/readline/plugin-init.c (ReadLine_readline): reference the returned string instead of creatinga new one
700         * syx/syx-primitives.c (FileStream_fileOp): fixed possible memory leak
702         * st/kernel/Console.st: added ConsoleChunkReader to fix multiple statements handling
704         * syx/syx-object.h (syx_string_new): use SYX_VSPRINTF
706         * syx/syx-utils.h (SYX_VSPRINTF): added
708         * syx/syx-utils.c (syx_vsprintf): removed
709         (syx_sprintf): removed
711 2008-02-18  Luca Bruno  <lethalman88@gmail.com>
713         * syx/syx-lexer.c (_syx_lexer_token_identifier): fix var:=val assignment
714         (_syx_lexer_token_number): fix D.! syntax, where D is a digit (issue #28)
716         * syx/syx-interp.h (syx_interp_is_initialized): removed, use syx_system_initialized instead
717         All calls have been updated.
719         * syx/syx-parser.c (_syx_parser_parse_term): raise a new error for bad expression starts
721 2008-01-25  Luca Bruno  <lethalman88@gmail.com>
723         Replaced all occurrences of NotFound signal with #errorNotFound.
725         * st/kernel/initialDecl.st: (NotKeyed): added class
727         * st/kernel/Dictionary.st (printOn): stop after maxPrint
729         * st/kernel/ArrayedCollection.st (with:with:with): added
730         (with:with:with:with): added
732         * st/kernel/Interval.st (species): added
733         (copyClass): removed
734         (collectClass): removed
736         * st/kernel/Collection.st (copyEmptyForCollect):
737         (copyClass): removed
738         (collectClass): removed
739         (with:with:with): added
740         (with:with:with:with): added
741         (removeAll): added
742         (maxPrint): added
743         (printOn): stop after maxPrint
744         (notKeyed): added
746         * st/kernel/Object.st (species): added
747         (errorNotFound): added
749 2008-01-23  Luca Bruno  <lethalman88@gmail.com>
751         * syx/syx-parser.c (_syx_parser_parse_term): fixed bug which allowed things such as [ * ]!
753         * syx/syx-object.h (syx_string_new): allow variadic arguments
755         * syx/syx-error.c (syx_signal): ensure the interpreter is running
757         * syx/syx-parser.c: use syx_signal instead of syx_error
759         * syx/syx-utils.c (syx_sprintf): added
760         (syx_vsprintf): added
762 2008-01-18  Luca Bruno  <lethalman88@gmail.com>
764         * st/kernel/Number.st (to:by:reverseDo): added
766         * st/kernel/OrderedCollection.st (addAll): remove since implemented in Collection
767         (add:after): added
768         (add:before): added
769         (incrementLastIndex:): added
770         (shiftFrom:by): added
771         (addAllLast): added
772         (addAllFirst): added
773         (addLast): added
774         (addFirst): added
775         (removeLast): added
776         (removeFirst): added
777         (removeAtIndex): fixed
779         * st/kernel/String.st (basicAt): check for bounds
780         (basicAt:put): check for bounds
782         * st/kernel/SequenceableCollection.st (copyReplaceAll:with): fixed bug with String usage
784 2008-01-16  Luca Bruno  <lethalman88@gmail.com>
786         * syx/syx-object.c (syx_dictionary_bind_if_absent): fixed read error
788         * syx/syx-types.h (syx_malloc0): do not alloc 0 size
789         (syx_calloc): do not alloc 0 size
790         (syx_malloc): do not alloc 0 size
792         * syx/syx-object.c (syx_dictionary_rehash): fix memory leak
794         * st/kernel/Dictionary.st (keyAtValue): added
795         (keyAtValue:ifAbsent): added
796         (keys): added
797         (values): added
798         (printOn): added
799         (storeOn): added
800         (associationAt:ifAbsent): added
801         (includesAssociation): added
802         (removeAssociation): added
804         * st/kernel/Bag.st (add:withOccurrences): added
806         * st/kernel/Set.st: adjusted categories
808         * st/kernel/Collection.st (inject:into): added
810 2008-01-15  Luca Bruno  <lethalman88@gmail.com>
812         * syx/syx-init.c (_syx_file_in_basic): file in Random.st
814         * st/kernel/Random.st: added
816         * st/kernel/Integer.st (bitInvert): added
817         (bitAt): added
818         (printOn:base): added
819         (storeOn:base): added        
820         (printStringRadix): added
821         Added missing license header
823         * st/kernel/Float.st: change converting to truncation and round off
824         
825         * st/kernel/Integer.st: change converting to truncation and round off
826         (timesRepeat): added
828         * st/kernel/Number.st (rem): added
829         (strictlyPositive): added
830         (squared): added
832         * st/kernel/Character.st (newPage): added
833         (esc): added
834         (backspace): added
835         (isVowel): added
837         Rename #codePoint: occurrences to #value:. Keep #codePoint: anyway.
838         
839         * st/kernel/Integer.st (radix):
841         * st/kernel/String.st:
843         * st/kernel/Number.st (readFrom): 
845         * st/kernel/Character.st (asciiValue): added
846         (digitValue): added
848         * syx/syx-init.c (_syx_file_in_basic): file in Date.st
850         * st/kernel/Date.st: added
852         * st/kernel/initialDecl.st: add Date class
854         * st/kernel/Magnitude.st (between): moved to comparing category
855         (=): added
857         Implement storeOn, storeString and printOn for collections.
859         * st/kernel/SequenceableCollection.st (storeOn): added
861         * st/kernel/Collection.st (printOn): added
862         (storeOn): added
864         * st/kernel/Behavior.st (storeOn): added
866         * st/kernel/Integer.st (storeOn): added
868         * st/kernel/Character.st (storeOn): added
870         * st/kernel/String.st (storeOn): added
872         * st/kernel/Object.st (storeOn): added
873         (storeString): added
874         (printOn): use the right class article        
876         * st/kernel/Behavior.st (storeOn): added
878         * st/kernel/Association.st (storeOn): added
880         * st/kernel/Stream.st (space): added
881         
882 2008-01-14  Luca Bruno  <lethalman88@gmail.com>
884         * syx/syx-primitives.c (SmallInteger_print): removed since unused
886         Implement printOn: and use Transcript instead of #printNl.
887         
888         * st/kernel/Signal.st:
889         * st/kernel/False.st: 
890         * st/kernel/Integer.st: 
891         * st/kernel/True.st: 
892         * st/kernel/Object.st: 
893         * st/kernel/Behavior.st: 
894         * st/kernel/Metaclass.st: 
895         * st/kernel/String.st: 
896         * st/kernel/Character.st: 
897         * st/kernel/Symbol.st: 
898         * st/kernel/Console.st: 
899         * st/kernel/Fraction.st:
900         * st/kernel/UndefinedObject.st: 
901         * st/kernel/Association.st: 
903 2008-01-07  Luca Bruno  <lethalman88@gmail.com>
905         == Released 0.1.6 version == 
907 2008-01-06  Luca Bruno  <lethalman88@gmail.com>
909         Fixed examples build and various dist issues
910         
911         * configure.ac: missing -DWITH_PLUGINS
913         * plugins/Makefile.am: added
915 2008-01-05  Luca Bruno  <lethalman88@gmail.com>
917         Preparing for 0.1.6 release.
919 2007-12-29  Luca Bruno  <lethalman88@gmail.com>
921         * st/kernel/initialDecl.st: store commandLine object instead of commandLineArguments
923         Added makefiles for examples.
924         
925         * syx/Makefile.am: remove macros from here
927         * st/kernel/CommandLine.st: added
929         * src/main.c (_parse_args): do not handle -c
931         * 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.
932         (_syx_file_in_basic): added CommandLine.st
934         * st/kernel/SystemDictionary.st (initializeSystem:): added
935         (startupSystem): handle -c and -e options
937         * configure.ac: use SYX_OTHER_LIBS and SYX_OTHER_CFLAGS for libsyx and readd path macros
939 2007-12-26  Luca Bruno  <lethalman88@gmail.com>
941         Working on issue #22.
942         
943         * st/kernel/Console.st (setupHelp): added
944         (helpString): added
945         (run):
947         * syx/syx-lexer.c (_syx_lexer_token_string): unlimited strings
948         (_syx_lexer_token_symbol): unlimited symbols
949         (_syx_lexer_token_identifier): unlimited identifiers
951         Fix image snapshot inside scripts.
953         * st/kernel/FileStream.st (nextPut): removed
954         (nextPutAll): removed
956         * st/kernel/SystemDictionary.st (startupSystem): save the startupProcess before fileing files
958         * st/kernel/Console.st (nextLine): flush stdout
960         * syx/syx-primitives.c (FileStream_fileOp): return stdin/stdout/stderr, use fwrite instead of fputs, read instead of fread and fgetc
962 2007-12-25  Luca Bruno  <lethalman88@gmail.com>
964         Fix issue #25.
965         
966         * st/kernel/Compiler.st (runMultipleAndDeclarations): copy literal array because the primitive will modify it even it's constant
968         * syx/syx-primitives.c (FileStream_fileOp): use fread instead of fgets
970 2007-12-24  Luca Bruno  <lethalman88@gmail.com>
972         Changed FileStream behavior to handle FILE* instead of file descriptors
974         * syx/syx-primitives.c (FileStream_fileOp):
976         * st/kernel/FileStream.st:
978 2007-12-24  Rahul <blufox@gmail.com>
979         * plugins/x11/plugin-init.c: updated the module prefix to X11
981         * plugins/x11/x11gen.rb: updated module prefix to X11 and to remove
983         XlibXlib structure
985         * plugins/x11/Xlib.i: update with NeedWidePrototypes to compile in solaris
987         * plugins/x11/st/XDisplay.st: added instead of XDisplay
989         * plugins/x11/st/Xlib.st: updated with new module prefix X11 instead of
991         Xlib and remove XlibXlib
993         * plugins/x11/st/Display.st: removed
995         * plugins/x11/st/XEvent.st: updated by subclassing X11XEvent
997         * plugins/x11/SConscript: updated to install Xlib.st
999         * plugins/x11/Xlib_wrap.c: updated with new classnames
1001         * plugins/x11/swig.rb: updated the module prefix.
1003 2007-12-24  Luca Bruno  <lethalman88@gmail.com>
1005         * st/kernel/Behavior.st: fixed parsing instance and class variable names
1007         * configure.ac: enable mantainer mode, check for pkg-config and add prereq
1009         * syx/syx-object.c (syx_dictionary_rehash): missing check
1011 2007-12-23  Luca Bruno  <lethalman88@gmail.com>
1013         * plugins/x11/st/Wm.st: removed
1015         * plugins/x11/plugin-init.c: do not include Xlib_wrap.c
1017         * plugins/x11/Xlib.i:
1019         * plugins/x11/SConscript: compile Xlib_wrap.c
1021         * plugins/x11/Makefile.am: compile Xlib_wrap.c
1023         * configure.ac: enable debug level and fix plugins support
1025         * tests/stsupport/TestCStruct.st: update according to the latest changes and add tests for unions
1027         * tests/testforeignstruct.c (main): test unions
1029         Specify CStruct/CUnion fields with the same order as real C structs/unions
1030         for instance #(char f1) instead of the old #(f1 char).
1031         
1032         * st/foreign/CPointer.st (asByteArray): added
1033         (asString): added
1035         * st/foreign/CStructFieldTypePointer.st: added
1037         * st/foreign/CStructFieldType.st: handle pointers with a different class
1039         * st/foreign/CUnion.st: added
1041         * st/foreign/CUnionGenerator.st: added
1043         * syx/syx-init.c (_syx_file_in_basic): file in CUnion.st and CUnionGenerator.st
1045         * syx/syx-primitives.c (CPointer_asString): added
1046         (CPointer_asByteArray): added
1048         * plugins/wingui/Makefile.am: fix install dir
1050         * plugins/readline/Makefile.am: fix install dir
1051         
1052         * plugins/gtk/Makefile.am: fix install dir
1054         * plugins/x11/Makefile.am: fix install dir
1056 2007-12-21  Luca Bruno  <lethalman88@gmail.com>
1058         Build plugins and install desktop files using the GNU build system.
1059         
1060         * plugins/wingui/Makefile.am: added
1062         * plugins/gtk/Makefile.am: added
1064         * plugins/readline/Makefile.am: added
1066         * plugins/x11/Makefile.am: added
1068         * share/Makefile.am: added
1069         
1070         Run tests into the tests directory.
1071         
1072         * tests/SConscript (builder_test): use abspath and build into the tests directory
1074         * Makefile.am (SUBDIRS): add tests
1076         * tests/Makefile.am: added
1078         * configure.ac: add st files for the C foreign interface
1080 2007-12-20  Luca Bruno  <lethalman88@gmail.com>
1082         * tests/stsupport/TestCStruct.st (assertField): test float and doubles
1084         * tests/testforeignstruct.c (main): test float and doubles
1086         * syx/syx-primitives.c (CStructFieldType_sizeOfPointer): added
1087         (CStructFieldType_sizeOfLong): added
1089         * st/foreign/CStructFieldType.st: added C types sizes in bytes and long/pointer primitives to retrieve the size.
1090         * st/foreign/CStruct.st
1092 2007-12-19  Luca Bruno  <lethalman88@gmail.com>
1094         * SConstruct: merge CFLAGS
1095         use gcc as preferred compiler
1096         merge CC LINK and AR
1098         * share/syximage.desktop: added comment translation, updated to latest standards and do not display the entry in the menus (thanks to Thilo Pfennig)
1100         * share/syx.desktop: added comment translation and updated to latest standards (thanks to Thilo Pfennig)
1102         * syx/syx-init.c (syx_init): give precedence to the given root directory
1104         * configure.ac: removed unuseful line
1106         * tests/stsupport/TestCStruct.st:
1107         Created Test1Struct, Test2Struct and Test3Struct for testing read/write accessors.
1108         (expectOffsets:from:): renamed to testOffsets:from:
1109         (testOffsets:from:):
1110         (testRead): added
1111         (testWrite): added
1113         * tests/testforeignstruct.c (main): create read/write tests
1115         * st/foreign/CStruct.st (primOn:type:at): added
1116         (primOn:type:at:put): added
1117         
1118         * st/foreign/CStructFieldSpec.st (compileAccessorsOn): added
1120         * st/foreign/CStructGenerator.st (compileAccessorsOn): implemented
1122         * st/foreign/CStructFieldType.st (compileAccessorsOn:named:atOffset): added
1123         (compileReadAccessorsOn:named:atOffset): added
1124         (compileWriteAccessorsOn:named:atOffset): added
1125         (initialize): largeInteger renamed to long
1127         * syx/syx-primitives.c (CStruct_on_type_at): added
1128         (CStruct_on_type_at_put): added
1130         * syx/syx-object.h: 
1132         * syx/syx-object.c (syx_class_initialize): renamed to syx_object_initialize
1133         (syx_object_initialize): added
1134         
1135 2007-12-18  Luca Bruno  <lethalman88@gmail.com>
1137         * st/foreign/CStructGenerator.st (alignFields): cleaned the code
1139         * st/foreign/CStructFieldSpec.st (alignAccordingToPreviousField): fixed
1140         (nextAlignedOffset): added
1142         * tests/testforeignstruct.c: added
1144         Moved CPointer and CObject to st/foreign.
1146         * SConstruct: install st/foreign files
1147         
1148         * st/kernel/String.st (isCapitalized): added
1150         * syx/syx-init.c (_syx_file_in_basic): file in st/foreign files
1152         * st/foreign: added foreign structure interface support for C
1154 2007-12-17  Luca Bruno  <lethalman88@gmail.com>
1156         * plugins/x11: added (thanks to Rahul aka blufox)
1158         * SConstruct: build x11 plugin
1160         * st/kernel/CPointer.st: added
1162         * st/kernel/CObject.st (free): added
1163         (finalize): added
1165         * syx/syx-object.h: 
1167         * syx/syx-object.c (syx_class_initialize): added
1169         * syx/syx-interp.h (syx_interp_is_initialized): added
1171         * syx/syx-init.c (_syx_file_in_basic): file in CPointer.st and CObject.st
1173         * syx/syx-primitives.c (CPointer_free): added
1175         * plugins/SConscript: add x11 plugin
1177         * plugins/gtk/SConscript: add Swig interface files
1179 2007-12-16  Luca Bruno  <lethalman88@gmail.com>
1181         * st/kernel/CObject.st: added
1183         * syx/syx-init.c (_syx_file_in_basic): file in CObject.st
1185 2007-12-14  Luca Bruno  <lethalman88@gmail.com>
1187         == Released 0.1.5 version ==
1189         New process/context API
1191         * plugins/wingui/plugin-init.c (WndProcedure): 
1192         * plugins/gtk/plugin-init.c (syx_g_closure_marshal):
1193         * plugins/gtk/plugin-init.c (syx_plugin_initialize): 
1194         * syx/syx-interp.h (syx_interp_get_current_process): added
1195         
1196 2007-11-18  Luca Bruno  <lethalman88@gmail.com>
1198         * st/kernel/ArrayedCollection.st (withAll:startingAt): added
1200         * st/kernel/OrderedCollection.st (asArray): added
1202         * syx/syx-interp.c (syx_exec_state_fetch): updated to complain new process execution
1204         * syx/syx-object.c (syx_process_new): do not require a context anymore
1205         (syx_method_context_new): setup the Process to hold the new context and copy arguments into the stack
1206         (syx_block_context_new): same as method context, and use the same frame of the outer context
1207         All calls have been updated
1209         * Removed all stacks from contexts and created a stack per process
1211         * Gave an important speed boost up
1213         * syx/syx-primitives.c (ArrayedCollection_replaceFromToWithStartingAt): in substitution of ArrayedCollection_replaceFromToWith
1214         (StdIOStream_nextPut): added
1215         (StdIOStream_nextPutAll): added
1216         (CompiledMethod_runOn): added in substitution of manual method context creation from Smalltalk        
1218 2007-11-08  Luca Bruno  <lethalman88@gmail.com>
1220         * SCons and GNU build: added support for gprof and internal profiling
1222         * syx/syx-profile.h: added
1224         * syx/syx-profile.c: added
1226 2007-11-02  Luca Bruno  <lethalman88@gmail.com>
1228         * examples/web/coldbrowser.st: embedding example of Syx into a CGI application
1230         * syx/syx-object.h (syx_string_new_unref): added
1232         * st/kernel/OrderedCollection.st: remove tally and implement relative indexes
1233         (removeAtIndex:): implemented
1234         (at:): reimplemented
1235         (at:put:): reimplemented
1237 2007-11-01  Luca Bruno  <lethalman88@gmail.com>
1239         * st/kernel/Dictionary.st: fixed rehashing
1240         renamed incrementNumElements to incrementTally
1242         * examples/web: added
1244 2007-08-29  Luca Bruno  <lethalman88@gmail.com>
1246         * syx/syx-object.h (SYX_BLOCK_CONTEXT_ENSURE_BLOCK): added instance variable
1248         * st/kernel/BlockClosure.st (ensure:): fixed block ensuring
1250         * syx/syx-interp.c (syx_interp_do_special): support block ensuring on self-return and stack-return
1252         * configure.ac: support build under MSYS
1254 2007-08-28  Luca Bruno  <lethalman88@gmail.com>
1256         * Added support for GNU building system
1258 2007-08-27  Luca Bruno  <lethalman88@gmail.com>
1260         * syx/SConscript: compile static objects before shared
1262         * SConstruct: install files contained in the share directory, call update-desktop-database and update-mime-database
1264         * st/kernel/ContextPart.st (showTraceback): renamed to tracebackString, show the real methodClass
1266         * syx/syx-object.h (SYX_OBJECT_IS_SYMBOL): added
1268         * syx/syx-init.c (syx_initialize_system): set syx_system_initialized to TRUE
1270         * syx/syx-error.c (syx_signal): if system is not initialized, call syx_error ()
1271         All calls have been updated
1273         * Renamed numElements variable to tally as designed by Smalltalk-80
1275         * st/kernel/Behavior.st (setInstanceVariableNames): fixed to scan the given string of variable names
1277         * st/kernel/YXTools.st: renamed to MVC.st
1279 2007-08-26  Luca Bruno  <lethalman88@gmail.com>
1281         * st/kernel/Behavior.st (setInstanceVariableNames): added
1282         
1283         * st/kernel/Metaclass.st: fixed metaclass creation
1285         * st/kernel/Behavior.st: fixed class creation
1286         
1287         * st/kernel/Dictionary.st (at:ifAbsent:): added
1289         * syx/syx-utils.c (syx_nanotime): added
1291         Fixed English in some comments, thanks to billijoex.
1292         
1293         * syx/syx-utils.c (syx_cold_parse_methods): restore the lexer if the syntax is not the expected for parsing method definitions
1295         Default compiler is now the C compiler, not the ST anymore. The ST compiler will be mantained
1296         for reference only.
1297         
1298         * syx/syx-lexer.c (syx_lexer_next_chunk): do not truncate the text by one char if it's at the end
1300         * syx/syx-parser.c (syx_parser_parse): be able to skip message pattern
1301         All calls have been updated
1303         * st/kernel/Compiler.st (runMultipleAndDeclarations): added
1305 2007-08-24  Luca Bruno  <lethalman88@gmail.com>
1307         * syx/syx-error.h: got rid of varargs macros
1309         * syx/syx-platform.h (SYX_BEGIN_DECLS): begins declarations for cplusplus
1310         (SYX_END_DECLS): ends declarations for cplusplus
1311         All headers have been updated
1313 2007-08-22  Luca Bruno  <lethalman88@gmail.com>
1315         * syx/syx-platform.h (syx_strdup): added
1316         (strndup): renamed to syx_strndup and moved from syx-types.h
1317         (malloc, malloc0, calloc, free): moved from syx-types.h
1318         All calls have been updated
1319         
1320         * All mixed declarations and code changed to allow strict ISO C compilation
1321         
1322         * All comments changed to complain ANSI C
1323         
1324         * syx/syx-object.h (struct SyxObject): bit-fields were removed for -pedantic, the size didn't vary
1326         * syx/syx-utils.c: issue #15 (Krzysztof Kowalczyk)
1328         * Fixed issue #14 (kkowalczyk)
1330 2007-08-21  Luca Bruno  <lethalman88@gmail.com>
1332         * examples/embedding/SConscript: fix use of -rdynamic
1334         * Applied patch of issue #13
1336         * syx/syx-signal.c: signal function to be optional
1338 2007-08-20  Luca Bruno  <lethalman88@gmail.com>
1339         
1340         == Released 0.1.4 version ==
1342         * Missing documentation was covered for Doxygen
1344 2007-08-19  Luca Bruno  <lethalman88@gmail.com>
1346         * src/main.c (_parse_args): an comand line option parser was created to replace getopt
1348         * examples/console/SConscript (target): added
1350         * examples/SConscript: added
1352         * examples/embedding/SConscript: added
1354         * syx.desktop: added
1356         * syx.sln: added for MSVC support
1358         * syx.vcproj: added for MSVC support
1360         * syx/syx-plugins.c (_syx_plugin_default_method): added
1361         (syx_plugins_init): do not create a static method on initialization because it's not being inserted in a GC root
1363 2007-08-17  Luca Bruno  <lethalman88@gmail.com>
1365         * plugins/gtk/gtk.i: remove pango dependency temporarly
1367         * plugins/gtk/pango.i: removed temporarly
1369         * plugins/gtk/st/PangoAttrList.st: removed temporarly
1371         * plugins/gtk/SConscript: link to gdk-win32
1373 2007-08-16  Luca Bruno  <lethalman88@gmail.com>
1375         * plugins/gtk/plugin-init.c (syx_plugin_initialize): parse all remaining st files
1376         (syx_g_closure_marshal): leave gdk threads before entering the smalltalk callback
1378         * plugins/gtk/st/GtkTools.st: added a textview for evaluating code
1380         * plugins/gtk/st/Gtk.st: added missing GTK+ classes
1382         * st/kernel/YXTools.st (onDoIt): evaluate code
1384         * st/kernel/Compiler.st (identifierToken): handle identifier:= as an assigment
1386         * st/kernel/FileStream.st (StdIOStream): added class and methods for standard I/O
1387         (open:for:): support append mode, read and write create (w+)
1389         * syx/syx-primitives.c (FileStream_fileOp): added more checks, use O_CREAT flags for write, support w+ and append mode
1391         * syx/syx-scheduler.c (syx_scheduler_add_process): fixed process scheduling
1393         * syx/syx-signal.c (_syx_internal_sighandler): save a recovered copy of the image on SIGSEGV or SIGILL
1394         (_syx_save_recovered_image): added
1396         * src/main.c (_do_recovery): added for recovering an image from a possibly broken Process
1398 2007-08-15  Luca Bruno  <lethalman88@gmail.com>
1400         * tests/testscheduler.c: fixed blocks to use the right number of arguments
1402         * plugins/gtk/st/GtkTextView.st: added
1404         * SConstruct: rootdir option has been added
1405         support for documentation installation/clean has been added
1406         replaced doc command with doc option
1408 2007-08-14  Luca Bruno  <lethalman88@gmail.com>
1410         * plugins/gtk/st/GtkTextView.st: added
1412         * plugins/gtk/st/GtkTextMark.st: added
1414         * plugins/gtk/st/GtkTextTag.st: added
1416         * plugins/gtk/st/GtkTextTagTable.st: added
1418         * st/kernel/Object.st (perform methods): check argument count
1420         * syx/syx-error.h (syx_signal_create_context): added
1422         * syx/syx-parser.c (_syx_parser_parse_block_message_pattern): save argumentCount
1423         (_syx_parser_parse_method_message_pattern): save argumentCount
1425         * syx/syx-object.h (SYX_CODE_ARGUMENT_COUNT): instance variable added do CompiledCode
1427 2007-08-13  Luca Bruno  <lethalman88@gmail.com>
1429         * makefile.vc (OBJS): missed new syx-signal.obj
1431         * st/kernel/FileStream.st (fileIn): handle scripting header
1433         * syx/syx-utils.c (syx_show_traceback): added
1435         * st/kernel/SystemSignal.st: added
1437         * syx/syx-signal.c: added
1439         * plugins/gtk/st/GtkTextIter.st: added
1441         * syx/syx-lexer.c: usage of pushed_back char has been fixed to build for PowerPC
1443 2007-08-12  Luca Bruno  <lethalman88@gmail.com>
1445         * syx/syx-interp.c: missed endianness compatibility for optimized blocks
1447         * st/kernel/SystemDictionary.st (haveBigEndianness): removed
1449         * src/main.c (_getopt_do): -c option has been added
1451         * st/kernel/SystemDictionary.st (continueStartup): a new variable has been added to specify if the startup sequence must continue after fileing in files
1453         * syx/syx-platform.h (SYX_PLUGIN_PATH): added
1455         * SConstruct: option 'plugindir' has been added which belongs by default to the machine-dependent directory $libdir/syx
1457 2007-08-11  Luca Bruno  <lethalman88@gmail.com>
1459         * plugins/gtk/st/GtkTextBuffer.st: added but doesn't work yet because of other Gtk dependencies
1461         * st/kernel/initialDecl (CompiledCode): argumentCount and temporaryCount have been renamed to argumentStackSize and temporaryStackSize and moved to CompiledMethod
1462         (CompiledBlock): argumentsTop has been renamed to argumentStackTop
1464         * syx/syx-enums.h: instance variables of CompiledCode, CompiledMethod and CompiledBlock have been updated
1466         * syx/syx-object.c: method and block context creation have been updated according to the above refactoring
1467         
1468         * st/kernel/PositionableStream.st (peek): answer nil if at the end
1469         (skipTo:): added
1471         * syx/syx-lexer.c (_syx_lexer_token_symbol): support for quoted symbols
1473         * st/kernel/Compiler.st (initializeStream): support for quoted symbols
1475         * syx/syx-init.c (syx_set_root_path): save the root path anyway also if it doesn't exist
1477         * src/main.c (_getopt_do): fixed issue #11
1479         * syx/syx-primitives.c (FileStream_fileOp): assert the object is a string for nextPutAll:
1481         * plugins/wingui/SConscript: fixed building
1483         Renamed all 'class' to 'klass' to support C++ compilation.
1484         Applied issue #9 patch
1486 2007-08-10  Luca Bruno  <lethalman88@gmail.com>
1488         Refactored all inline to be inserted into headers (issue #9).
1489         Added dllimport and dllexport attributes when building DLLs.
1490         
1491         * syx/syx-memory.c (syx_freev): removed
1493         * plugins/gtk/st/GtkScrolledWindow.st: added
1495         * plugins/gtk/st/GtkAdjustment.st: added
1497         * plugins/gtk/plugin-init.c (syx_g_closure_marshal): added marshal function for GClosure
1499         * plugins/gtk/st/GObject.st (GClosure): added wrapper
1500         
1501         * syx/syx-utils.c (syx_send_messagev): added
1503         * syx/syx-plugins.c (syx_plugin_symbol): added
1505         * st/kernel/SystemDictionary.st (plugin:cSymbol:): added with primitive
1507 2007-08-09  Luca Bruno  <lethalman88@gmail.com>
1509         * syx/syx-scheduler.c (syx_scheduler_remove_process): set next process to be active
1511         * syx/syx-primitives.c (ArrayedCollection_replaceFromToWith): added yet more checks
1513         * syx/syx-plugins.c (syx_plugin_call_interp): support C calls to nil plugin (main program)
1515         * st/kernel/Compiler.st (indexOfInstance): support C calls to nil plugin (main program)
1517         * SConstruct: added inline checks (issue #9)
1519         * syx/syx-platform.h: inline defines (issue #9)
1521         * syx/syx-parser.c: indented file and fixed typo (issue #10)
1522         (_syx_parser_parse_primitive): support C calls to the main program
1524         * syx/syx-utils.c (syx_do_it_blocking): added
1526 2007-08-08  Luca Bruno  <lethalman88@gmail.com>
1528         Added support for MSVC compilation (issue #8)
1529         
1530         * syx/syx-plugins.c (syx_plugin_call): added, previous was renamed to syx_plugin_call_interp
1531         (syx_plugins_init): added for creating a default method to send #primitiveFailed
1532         Added support for main program handle (NULL filename)
1534         * st/kernel/SystemDictionary.st (plugin:cCall:withArguments:): added with relative primitive
1535         (cCall:withArguments:): added
1537         * syx/syx-utils.c (syx_file_in_blocking): added
1539         * examples/embedding: added 4 kind of examples
1541         * syx/SConscript: include syx-config.h to be installed
1543 2007-08-07  Luca Bruno  <lethalman88@gmail.com>
1545         * st/kernel/YXTools.st: added model-view-controller classes and basic Workspace and WorkspaceView
1547         * plugins/gtk/st/GtkTools.st: added GtkWorkspace and GtkWorkspaceView
1549         * plugins/gtk/st/GtkBox.st: added wrapper for GtkBox, GtkHBox and GtkVBox
1551         * plugins/gtk/st/GtkButton.st: added wrapper
1553         * plugins/gtk/pango.i: added basic SWIG interface
1555         * plugins/gtk/plugin-init.c: fixed threaded main loop
1557 2007-08-06  Luca Bruno  <lethalman88@gmail.com>
1559         * syx/syx-object.c (syx_dictionary_index_of): added
1560         (syx_dictionary_rehash): added
1561         (syx_dictionary_at_symbol_put): rehash when full
1563         Changed dictionary behavior to use linear probing
1564         Detached Gtk smalltalk files to be packaged alone
1565         Create a SWIG interface to wrap Gtk
1567 2007-08-05  Luca Bruno  <lethalman88@gmail.com>
1569         * st/kernel/BlockClosure.st (ensure:): fixed
1570         (ifCurtailed:): added
1572         * st/kernel/String.st: added comparing methods
1573         (sameAs:): added
1574         (subStrings:): added
1575         (asUppercase): added
1576         (asLowercase): added
1578         * st/kernel/OrderedCollection.st: added size buffering for new elements
1580         * st/kernel/Number.st (/): added zero division check
1582         * st/kernel/Signal.st: added ZeroDivide
1584         * Added basic converting methods to collections
1586 2007-08-04  Luca Bruno  <lethalman88@gmail.com>
1588         * st/kernel/SequenceableCollection.st (replaceFrom:with:): fixed stop index
1590         * st/kernel/Interval.st (at:): added
1591         (size): added
1592         (start, stop, step): added accessors
1593         (reverse): added
1595         * st/kernel/Number.st (to:by:do:): support for negative steps
1596         (to:by:reverseDo:): removed
1598         * st/kernel/SequenceableCollection.st (from:to:by:keysAndValuesDo:): added
1599         (from:to:by:do:): added
1601         * st/kernel/Collection.st (copyClass): added
1602         (collectClass): added
1604         * SConstruct: add the examples directory to the source distribution
1606 2007-08-03  Luca Bruno  <lethalman88@gmail.com>
1608         * syx/syx-primitives.c (Object_perform): fixed arguments
1609         (Object_performWithArguments): fixed too
1611         * st/kernel/Compiler.st (symbolToken): fixed binary symbol parsing
1612         (parseArray): added
1614         * st/kernel/Number.st (readFrom:): fixed parsing
1616         * st/kernel/Interval.st: added
1618         * syx/syx-init.c (syx_build_basic): send #initializeFirstSystem instead of #initialize
1620         * st/kernel/ArrayedCollection.st (copyWithout:): added refinement
1621         
1622         * st/kernel/Collection.st (copyWithout:): added
1624         * st/kernel/SequenceableCollection.st (copyReplaceAll:with:): added
1625         (matchSubcollection:startingAt:): added
1626         (copyReplaceFrom:to:with:): added
1627         (copyReplaceFrom:to:withObject:): added
1628         (copyReplacing:withObject:): added
1630 2007-08-02  Luca Bruno  <lethalman88@gmail.com>
1632         * st/kernel/TextCollector.st: use #perform:with: to send message to the proxy
1634         * st/kernel/Behavior.st (initializeSubclassOf): create a method dictionary
1636         * syx/syx-object.c (syx_metaclass_new): create a method dictionary
1637         (syx_class_new): create a method dictionary
1639         * st/kernel/Object.st (respondsTo:): added
1640         (perform:): added
1641         (perform:with:): added
1642         (perform:with:with:): added
1643         (perform:with:with:with): added
1644         (perform:withArguments): added
1646         * st/kernel/Behavior.st (doesUnderstand:): added
1648         * st/kernel/Dictionary.st (includesKey:): added
1650         * st/kernel/Set.st: added rehashing methods
1651         added numElements instance variable
1653         * st/kernel/Dictionary.st: added rehashing methods
1654         added numElements instance variable
1656         * st/kernel/ObjectMemory.st (atData:put:): added with primitive
1658         * st/kernel/Link.st: removed since unused anymore
1660 2007-08-01  Luca Bruno  <lethalman88@gmail.com>
1662         * syx/syx-interp.c (syx_process_execute_blocking): save/restore the active process when running blocking processes
1664         * syx/syx-interp.h (SYX_PRIM_FAIL): add the arguments array to the GC transaction
1666 2007-07-30  Luca Bruno  <lethalman88@gmail.com>
1668         == Released 0.1.3 version ==
1669         
1670         * st/kernel/Character.st (isXDigit): added
1672         * st/kernel/Compiler.st (literalArrayToken): fixed parsing when the array contains numbers
1674         * st/kernel/Number.st (readFrom:): parse radix numbers
1676         * syx/syx-parser.c (_syx_parser_parse_literal_array): character parsing in the array was missed
1678         * SConstruct: updated the help message
1680         * Documentate more functions
1682         * tests/testinterp.c: fix to run after the startup changes
1684 2007-07-29  Luca Bruno  <lethalman88@gmail.com>
1686         * st/kernel/CompiledMethod.st: fixed inherited methods
1688         * st/kernel/initialDecl.st: fixed inheritance for compiled codes according to syx-enums.h
1690         * plugins/gtk/SConscript: fix Gtk+ build
1692         * plugins/wingui: added plugin
1694         * syx/syx-scheduler.c (syx_scheduler_run): missing static
1696         * syx/syx-plugins.c: handle unicode win32 api
1698         * syx/syx-platform.h: emulate errno for platforms that doesn't have support for it
1700         * syx/syx-primitives.c (FileStream_fileOp): return 0 if fstat is not available
1702         * syx/syx-error.h (syx_error): show a MessageBox on WindowsCE
1704         * syx/syx-utils.c (syx_cold_file_in): say we have 1000000 characters in a standard file if fstat is not available
1705         (syx_to_wstring): added
1706         (syx_to_string): added
1708         * st/kernel/WinWorkspace.st: added
1710         * syx/syx-init.c: fixed number of instance variables for Smalltalk
1711         (syx_initialize_system): remove previous startupProcess and call #startupSystem: in a new scheduled process
1712         (syx_init): force image to be in the root device for embedded Windows CE
1714         * syx/syx-types.h: added syx_wstring and syx_wsymbol types
1716         * st/kernel/TextCollector.st (cr): show also the carriage return
1718         * st/kernel/SystemDictionary.st (startupSystem:): (was initializeSystem:) handle startup requests
1720         * src/main.c (_do_getopt): restrictive support to missing getopt
1721         force WinWorkspace to startup on WindowsCE
1723         * src/SConscript: do not create the default image if we're cross compiling
1725         * syx/SConstruct: added WINGUI option to enable/disable the syx-wingui plugin
1726         define WINCE macro when compiling for Windows CE
1727         let getopt, fstat, access, getenv and perror be optional functions
1728         do not specify c99 standard when cross compiling to WindowsCE since the library doesn't handle ANSI calls
1730 2007-07-26  Luca Bruno  <lethalman88@gmail.com>
1732         * SConstruct: added 'shared' and 'static' options
1734         * st/kernel/Compiler.st: fixed stream positioning to handle cascading
1736         * st/kernel/ObjectMemory.st (setConstant:): added
1738         * st/kernel/Compiler.st (genLiteral:): set literals to be constant
1740         * syx/syx-init.c (syx_initialize_system): pass command line arguments to the Smalltalk initializer
1741         (syx_init): initialize command line arguments
1743         * st/kernel/SystemDictionary.st (commandLineArguments): added variable with accessor
1744         (initializeSystem:): fileIn the first argument
1746 2007-07-25  Luca Bruno  <lethalman88@gmail.com>
1748         * syx/syx-interp.c (syx_interp_do_special): ensure condition is boolean
1750         * syx/syx-object.c (syx_class_lookup_method): class for super messages must be specified instead of a specific alghoritm
1751         (syx_class_lookup_method_binding): same
1753         * syx/syx-enums.h (SyxVariables): Do not include unused instance variables in CompiledBlock
1754         All calls have been updated, also in Smalltalk.
1755         
1756         * st/kernel/SequenceableCollection.st (replaceFrom:with:): use self size instead of the given collection one
1757         (copyFrom:): added
1759         * st/kernel/CompiledMethod.st (CompiledCode): moved accessors from CompiledMethod and added methodClass
1761         * st/kernel/WriteStream.st: added some other initialization for other streams
1763         * st/kernel/Stream.st: added access mode
1765         * st/kernel/FileStream.st (fileIn): added
1766         Added more features
1768         * syx/syx-primitives.c (FileStream_fileOp): new operation to obtain the size of the file; return nil for #next when at EOF
1769         (ArrayedCollection_replaceFromToWith): fixed size of the effective replacement and added checks
1770         (String_compile): removed
1772 2007-07-24  Luca Bruno  <lethalman88@gmail.com>
1774         Fixed a big bug relative to super messages updating all calls.
1776         * st/kernel/Number.st (readFrom:): fixed float parsing
1778         * st/kernel/Compiler.st (CompilerLexer): include the stream as instance variable instead of subclassing ReadStream
1780 2007-07-23  Luca Bruno  <lethalman88@gmail.com>
1782         * st/kernel/String.st (compileFor:): a refactor of old #compile using the ST compiler
1784         * syx/syx-init.h (SYX_INIT_MEMORY_SIZE): changed default size from 20000 objects to 100000 objects
1786         * syx/syx-init.c (syx_initialize_system): addded
1788         * st/kernel/SystemDictionary.st (initialize): added
1789         (initializeSystem): call all system initialization object requests
1790         (registerForSystemInitialization:): added
1792         * syx/syx-utils.c (syx_find_first_non_whitespace): added
1794         * syx/syx-parser.c (syx_parser_parse): save text in methods
1796         * syx/syx-object.h (SYX_METHOD_TEXT): added 'text' instance variable to CompiledCodes
1798         * SConstruct (endianness): added option to manually specify the endianness of the machine
1799         (host): added option to cross-compile for the specified machine
1801         * st/kernel/Compiler.st (duplicateAt:): added
1802         (doContinuation:): support cascades
1804 2007-07-22  Luca Bruno  <lethalman88@gmail.com>
1806         * SConstruct: cache options
1807         added support for cross compiling
1809         * st/kernel/Compiler.st (CompilerParser): added whileTrue: and whileFalse: optimized blocks
1810         (parseNameTerm:): added
1811         (parseBlock): added
1812         (CompilerLexer): do not skip when at the end of the stream
1813         fixed super receiver
1815         * st/kernel/Dictionary.st (associationAt:): added
1816         
1817         * st/kernel/CompiledMethod.st (CompiledBlock): initialize from parser
1819         * st/kernel/Association.st (VariableBinding): added several methods
1821         * st/kernel/Behavior.st (compile:): added
1823         * st/kernel/Number.st (fromStream:): skip back the stream if it's not a float
1825 2007-07-20  Luca Bruno  <lethalman88@gmail.com>
1827         * st/kernel/Compiler.st: added optimized conditional blocks
1829         * st/kernel/Number.st (fromStream:): ensure the character is not nil
1831 2007-07-19  Luca Bruno  <lethalman88@gmail.com>
1833         * st/kernel/Magnitude.st (between:and:): moved from Number
1834         
1835         * st/kernel/Behavior.st (allSuperclassesDo:): fixed
1837         * st/kernel/CompiledMethod.st (fromParser:): added
1838         (initializeParser:): added
1840         * st/kernel/Character.st: handle magnitude
1842         * st/kernel/Compiler.st (CompilerParser): done, missing cascades and optimized blocks
1844         * st/kernel/Stack.st: added
1846 2007-07-17  Luca Bruno  <lethalman88@gmail.com>
1848         * syx/syx-bytecode.c (syx_bytecode_duplicate_at): increase stack size when duplicating objects
1850         * st/kernel/SequenceableCollection.st (indexOf:): added
1851         (indexOf:startingAt:ifAbsent:): use #= instead of #==
1853         * st/kernel/Compiler.st: parse literal arrays
1854         (CompilerBytecode): added
1856         * st/kernel/Object.st (caseOf:otherwise:): added
1858 2007-07-16  Luca Bruno  <lethalman88@gmail.com>
1860         * syx/syx-object.c (syx_class_lookup_method_binding): fixed to handle super messages
1861         (syx_class_lookup_method): idem
1862         All calls have been updated
1864         * syx/syx-lexer.c (_syx_lexer_token_string): support single quotes into strings
1865         (_syx_lexer_token_binary): support for binary symbols up to 2 characters
1867         * st/kernel/initialDecl.st (ReadStream): added
1869         * st/kernel/Compiler.st: added
1871         * st/kernel/Float.st (*): added
1873         * st/kernel/String.st (asNumber): added
1875         * syx/syx-memory.c: save object->is_constant in the image
1877         * syx/syx-platform.h (syx_bswap_16): added
1878         (SYX_COMPAT_SWAP_16): added
1879         (SYX_COMPAT_SWAP_32): added
1881 2007-07-15  Luca Bruno  <lethalman88@gmail.com>
1883         * syx/syx-platform.h (syx_bswap_32): wrap bswap_32
1885         * SConstruct (check_endianness): added to check endianness
1886         (byteswap.h): added for optional check
1888         * syx/syx-memory.c: first attempt for the image to be compatible with different endianness
1890         * src/SConscript: let it work on MacOSX (PPC)
1892         * plugins/gtk/SConscript: do not compile GTK if it's not found
1894         * st/kernel/Character.st: applied Sam Philips's patch that covers more ANSI
1896         * st/kernel/Number.st (reciprocal): added
1897         (asFraction): added
1898         (compare:): added
1900         * st/kernel/Integer.st (gcd:): added
1902         * st/kernel/Fraction.st (reduce): added
1903         (+): added
1904         (-): added
1905         (*): added
1906         (/): added
1907         (reciprocal): added refinement
1908         (compare:) added
1909         (<, >, <=, >=, =, ~=): added
1910         (zero): added
1912         * syx/syx-memory.c (syx_memory_gc_end): fixed GC transactions ending
1913         (syx_memory_gc): save/restore GC transaction state to hold #finalize messages
1915         * syx/syx-lexer.c (_syx_lexer_token_number): fixed small integer parsing
1917 2007-07-14  Luca Bruno  <lethalman88@gmail.com>
1919         * st/kernel/LargeInteger.st (/): added
1920         (//): added
1921         (quo:): added
1923         * st/kernel/Number.st (//): added
1924         (quo:): refined
1926         * st/kernel/Float.st (/): added
1927         (floor): added
1928         (ceiling): added
1930         * st/kernel/Integer.st (radix:): added
1931         (printString): added
1933         * syx/syx-primitives.c (SmallInteger_div): added overflow check
1935         * syx/syx-types.h (SYX_SMALL_INTEGER_DIV_OVERFLOW): added
1937         * 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)
1939         * st/kernel/SmallInteger.st (/): added
1940         
1941         * st/kernel/Fraction.st: added
1942         (asFloat): added
1944 2007-07-13  Luca Bruno  <lethalman88@gmail.com>
1946         == Released 0.1.2 version ==
1948         * syx/syx-memory.c (GC transactions): use multiple-level transactions
1950         * st/kernel/Float.st (truncated): added
1952         * st/kernel/SmallInteger.st (quo:): added and remove #/ fake
1954 2007-07-12  Luca Bruno  <lethalman88@gmail.com>
1956         * syx/syx-primitives.c (Object_at_put): prevent from modifying constant literals
1957         (ByteArray_at_put): idem
1959         * syx/syx-object.h (struct SyxObject): added is_constant flag
1961         * st/kernel/Number.st (to:by:reverseDo:): added
1963         * st/kernel/ArrayedCollection.st (copyWith:): added
1965         * st/kernel/Collection.st (copyWith:): added 
1967         * st/kernel/SequenceableCollection.st (findFirst:): added
1968         (findLast:): added
1969         (reverse): added
1970         (reverseDo): added
1971         (with:do:): added
1972         (atAll:put:): added
1973         (atAllPut:): added
1974         (from:to:keysAndValuesDo:) added
1976 2007-07-11  Luca Bruno  <lethalman88@gmail.com>
1978         * SConstruct: build on Mac OS
1980         * syx/SConscript: call ldconfig on POSIX during installation
1981         
1982         * syx/syx-object.c (SYX_SMALL_INTEGER_MUL_OVERFLOW): added
1983         (SYX_SMALL_INTEGER_SHIFT_OVERFLOW): added
1985         * syx/syx-memory.c (syx_memory_save_image): save large integers taking care of that Syx built without the Bignum support
1987         * syx/syx-interp.c (syx_process_execute_blocking): be safe against scheduling processes
1989         * syx/syx-primitives.c (LargeInteger): return a SmallInteger when we can
1991         * syx/syx-bytecode.c (syx_bytecode_gen_message): special unary and binary messages need to be rewritten
1993         * syx/syx-interp.c (syx_send_binary_message): fixed possibly memory corruption
1995 2007-07-10  Luca Bruno  <lethalman88@gmail.com>
1997         * SConstruct: use syx/syx-config.h instead of config.h
1999         * Added support for infinite-precision numbers
2001         * syx/syx-object.h (SYX_CLASS_FINALIZATION): added
2003         * syx/syx-object.c (syx_object_free): added object finalization
2004         (syx_large_integer_new): added
2005         (syx_large_integer_new_integer): added
2006         (syx_large_integer_new_mpz): added
2008         * syx/syx-types.h (SYX_SMALL_INTEGER): fixed small integer unpacking
2010         * syx/syx-interp.c (syx_interp_send_binary): use of syx_int32 for primitives
2011         (syx_inter_send_unary): idem
2013         * SConscript: fixed readline detecting
2015         * plugins/gtk/plugin-init.c (SYX_FUNC_PRIMITIVE): fixed according to previous objects refactoring
2017         * syx/syx-init.c (syx_fetch_basic): fetch CPointer class
2019 2007-07-09  Luca Bruno  <lethalman88@gmail.com>
2021         * syx/syx-parser.c (syx_parser_parse): push nil at the bottom of block context stack
2023         * st/kernel/String.st: added basic refinements
2025         * st/kernel/ByteArray.st: (byteAt:): added
2026         (byteAt:put:): added
2028         * syx/syx-primitives.c (ByteArray_at): return a small integer
2029         (ByteArray_at_put): require a small integer
2031         * syx/syx-init.h (SYX_INIT_MEMORY_SIZE): doubled initial memory size to 20000 objects
2033         * st/kernel/Bag.st: added
2035         * st/kernel/WriteStream.st: added
2037         * st/kernel/BlockClosure.st (value:value:): added
2039         * st/kernel/Dictionary.st (associationsDo:): added
2040         (do:): fixed to enumarate values
2041         (keysAndValuesDo:): added
2042         (keysDo:): added
2043         (select:, collect:, reject:): added for refinement
2045         * st/kernel/ArrayedCollection.st (select:, collect:, reject:): added for refinement
2047         * st/kernel/Collection.st (copyEmpty): added
2049         * syx/syx-parser.c (_syx_parser_parse_term): on error, print the expression if it's a string
2051         * st/kernel/IdentityDictionary.st: added
2053 2007-07-06  Luca Bruno  <lethalman88@gmail.com>
2055         * syx/syx-error.c (syx_error_init): what a missing static
2057         * st/kernel/Dictionary.st: subclass Collection and remove hashTable variable
2058         
2059         * 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.
2061         * syx/syx-object.c (syx_object_vars_size): added
2063         * st/kernel/SmallInteger.st (*): added temporarly to get rid of primitives for finding indexes
2065         * st/kernel/Set.st: added
2067         * st/kernel/SequenceableCollection.st (=): added
2069 2007-07-05  Luca Bruno  <lethalman88@gmail.com>
2071         == Released Syx 0.1.1 version ==
2073         * syx/syx-scheduler.c (_syx_scheduler_save): remove fd_sets from being written into the image
2074         
2075         * src/SConscript: fixed bdist command
2076         
2077         * st/kernel/Object.st (error:): added
2078         (doesNotUnderstand:): fixed to complain the standard
2080         * st/kernel/Dictionary.st (indexOf:): small but important fix
2081         (new): fixed initialization
2082         (initializeTable:): added
2084         * st/kernel/Signal.st (handlerContext): added
2085         (signal:): added
2086         (messageText): added
2087         (description): added
2088         (MessageNotUnderstood>>message:receiver:): added
2090         * syx/syx-primitives.c (Signal_findHandlerContext): removed
2092 2007-07-04  Luca Bruno  <lethalman88@gmail.com>
2094         * Added bdist command to create a binary distribution
2096         * Added method caching to unary and binary messages too
2097         
2098         * Implemented linear hash tables, similiar to double hash
2100         * st/kernel/SmallInteger.st (/): added temporarly
2101         (\\): added
2103         * st/kernel/Dictionary.st (at:): use hashing
2104         (at:put:): use hashing
2105         (indexOf:): added
2106         
2107         * syx/syx-object.c (syx_string_hash): added
2108         (syx_object_hash): fixed
2109         (syx_dictionary_at_symbol_put): renamed
2111 2007-07-03  Luca Bruno  <lethalman88@gmail.com>
2113         * st/kernel/Integer.st: added
2114         (bitAnd:): added
2115         (bitOr:): added
2116         (bitxor:): added
2118         * st/kernel/Number.st (between:and:): added
2119         (abs): added
2120         (negated): added
2121         (sign): added
2123         * st/kernel/SystemDictionary.st (at:put:): accept only symbol keys
2125         * st/kernel/ObjectMemory.st (snapshot:): was a bad bug
2127         * st/kernel/Collection.st: added some useful methods
2128         
2129         * syx/syx-primitives.c (FileStream_fileOp): fixed opening filenames
2131         * syx/syx-parser.c (_syx_parser_do_key_continuation): inlined whileFalse:
2133         * st/kernel/PositionableStream.st: added
2135         * st/kernel/Behavior.st: added subclassing
2137 2007-07-02  Luca Bruno  <lethalman88@gmail.com>
2139         == Released Syx 0.1 version ==
2141         * SConstruct: be able to run Syx in every location on Windows using
2142           relative paths
2143         
2144         * st/kernel/SequenceableCollection.st (at:ifAbsent:): added
2145         (after:): added
2146         (before:): added
2147         (copyFrom:to:): added
2149         * st/kernel/Collection.st (collect:): added
2150         (includes:): added
2151         (isEmpty): added
2152         (detect:ifNone:): added
2153         (occurrencesOf:): added
2154         (reject:): added
2155         (select:): added
2157         * st/kernel/True.st,False.st (& |): added
2159         * st/kernel/Object.st (copy): added with relative primitive Object_copy
2160         (isKindOf): added
2161         (isMemberOf): added
2163 2007-07-01  Luca Bruno  <lethalman88@gmail.com>
2165         * syx/syx-memory.c (syx_memdup): added
2167         * Fixed a big bug in block closures. Had to add a new bytecode to fix that
2168         
2169         * syx/syx-object.c (syx_object_copy): added
2171         * syx/syx-object.h (SYX_CLASS_SUBCLASSES): added instance variable to Behavior
2173         * syx/syx-memory.h (SYX_MEMORY_INDEX_OF): added
2175         * 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
2176         (syx_array_remove): added
2177         (syx_array_add): added
2179         * syx/syx-error.c (syx_error_init): message not understoods are handled differently
2181         * st/kernel/Object.st (doesNotUnderstand). added (issue #2)
2183         * syx/syx-interp.c (syx_interp_send_unary): use syx_does_not_understand (issue #2)
2184         (syx_interp_send_binary): idem
2185         (syx_interp_send_message): idem
2186         (syx_interp_send_super): idem
2188         * syx/syx-error.h (syx_does_not_understand): added (issue #2)
2190         * syx/syx-init.c (_syx_file_in_basic): load Magnitude.st
2192         * src/main.c (_getopt_do): do not set the ImageFileName
2194         * syx/syx-primitives.c (Object_identifyHash): added
2196         * Added LargeNegativeInteger support
2198 2007-06-30  Luca Bruno  <lethalman88@gmail.com>
2200         * Reenstablished sequence of key/value pairs in hash tables
2202         * Done some changes to the Smalltalk code
2204 2007-06-29  Luca Bruno  <lethalman88@gmail.com>
2206         * syx/syx-primitives.c: added support for both positive and negative large integers
2207         
2208         * syx/syx-init.c (syx_quit): free initial paths
2210         * 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
2212         * syx/syx-interp.c (syx_process_execute_blocking): do not take care of yields
2213         (syx_exec_state_fetch): reset bytecodes count to stop execution of blocking processes
2215         * syx/syx-parser.c (_syx_parser_parse_term): support for large integers
2217         * syx/syx-types.h (SYX_SMALL_INTEGER_CAN_EMBED): added
2218         (SYX_SMALL_INTEGER_OVERFLOW): added
2220         * syx/syx-lexer.c (_syx_lexer_token_number): added support for large integers
2222 2007-06-28  Luca Bruno  <lethalman88@gmail.com>
2224         * syx/syx-primitives.c (SmallInteger_asFloat): added
2226         * Smalltalk: add number coercing, now you can do arithmetic between integers and floats
2228         * src/main.c (_help): added
2230         * Added sdist target to scons files to create a source distribution
2232         * Added the license to all files
2233         
2234         * syx/syx-interp.c (syx_interp_send_message): simple method caching
2235         (syx_interp_send_super): idem
2237         * syx/syx-bytecode.c (syx_bytecode_gen_message): create an unbound method reference
2239         * syx/syx-object.c (syx_dictionary_binding_at_symbol): renamed. Return an Association of key -> value to bind variables
2240         (syx_dictionary_binding_at_symbol_if_absent): idem
2241         (syx_dictionary_bind): added
2242         (syx_dictionary_bind_if_absent): added
2243         (syx_dictionary_bind_set_value): added
2244         (syx_class_lookup_method_binding): added
2245         
2246 2007-06-27  Luca Bruno  <lethalman88@gmail.com>
2248         * Fixed initializing the image path
2250         * SConstruct (win32 options): fixed image path
2251         (install): fixed st files installation
2253         * tests/testinterp.c (main): added tests for class variables
2255         * syx/syx-bytecode.c (syx_bytecode_push_global): renamed to push_binding_variable, so it can be used also for class variables
2256         (syx_bytecode_assign_binding_variable): added
2258         * syx/syx-parser.c (_syx_parser_parse_name_term): search for class variables
2260         * syx/syx-utils.c (_syx_cold_parse_names): added to be reused with class variables
2261         (_syx_cold_parse_class): added class variables
2263         * syx/syx-interp.c (syx_interp_push_global): push the value of the variable binding instead of looking up the symbol each time
2264         (syx_interp_push_global): renamed to push_binding_variable, to push class variables or globals
2266         * syx/syx-init.h (syx_globals_link_at): added
2268         * syx/syx-object.c: removed unused syx_dictionary_at_const and syx_dictionary_at_const_if_absent
2269         (syx_dictionary_new): hold Associations instead of a sequence of keys and values
2270         (syx_dictionary_link_at_symbol): added
2271         (syx_dictionary_link_at_symbol_if_absent): added
2273 2007-06-26  Luca Bruno  <lethalman88@gmail.com>
2275         * src/main.c (_getopt_do): added option -S to quit once built the image from scratch
2277         * src/SConscript (syx executable): create the default image once installed
2279         * SConstruct: added win32 installation with only a single root prefix
2281         * syx/syx-init.c (syx_quit): missed scheduler quitting
2283         * syx/syx-primitives.c (Semaphore_waitFor): added
2285         * syx/syx-scheduler.h (struct SyxSchedulerPoll): added
2287         * syx/syx-scheduler.c: added syncronized I/O multi-plexing with select during scheduling
2288         (syx_scheduler_poll_read_register): added
2289         (syx_scheduler_poll_write_register): added
2290         (syx_scheduler_quit): free allocated memory for read/write polls
2292         * plugins/readline/plugin-init.c (Readline_readline): free returned string
2294         * syx/SConscript (install): added includes
2296         * tests/testscheduler.c (main): added semaphores test
2298 2007-06-25  Luca Bruno  <lethalman88@gmail.com>
2300         * st/kernel/initialDecl.st (Semaphore): be fixed containing an array of waiting processes
2302         * syx/syx-object.h (SYX_SEMAPHORE_LIST): added
2303         (SYX_SEMAPHORE_SIGNALS): added
2305         * syx/syx-utils.c (syx_semaphore_wait): readded
2306         (syx_semaphore_signal): readded
2308         * syx/syx-object.c (syx_object_grow_by): changed to a macro
2309         (syx_object_resize): added
2311         * INSTALL: changed to reflect the Syx building system
2313 2007-06-24  Luca Bruno  <lethalman88@gmail.com>
2315         * SConstruct (install): remove Smalltalk files when uninstalling
2317         * syx/syx-object.c (syx_symbol_new): return nil if NULL is supplied
2318         (syx_string_new): idem
2320         * syx/syx-primitives.c (BlockClosure_asContext): fixed GC transaction
2321         (BlockClosure_valueWithArguments): idem
2322         (BlockClosure_newProcess): idem
2323         (BlockClosure_value): use nil instead of an empty array
2324         (BlockClosure_on_do): idem
2326         * syx/syx-interp.h (SYX_PRIM_ARGS): added to assert the number of arguments
2328         * Added install target
2329         
2330         * syx/syx-plugins.c (syx_plugin_call): load the plugin not loaded yet
2332         * syx/syx-error.h (syx_warning): added
2334         * src/main.c (_getopt_do): added error checks
2336 2007-06-23  Luca Bruno  <lethalman88@gmail.com>
2338         * src/main.c: added getopt
2340         * Added readline plugin
2342         * syx/syx-lexer.c (_syx_lexer_token_number): added exponent for floats
2344 2007-06-22  Luca Bruno  <lethalman88@gmail.com>
2346         * Doxyfile (LATEX_OUTPUT): added
2347         (OUTPUT): moved to build directory
2349         * Separated executable binaries from libraries by adding directory src
2350         
2351         * Now the build process is done in a separate directory named 'build'
2353         * Fixed scheduled processes
2355         * Added plugins support
2356         
2357         * Added a basic Gtk plugin for test
2359 2007-06-21  Luca Bruno  <lethalman88@gmail.com>
2361         * syx/syx-object.c (syx_object_new_size): alloc for byte size if object has no references
2363         * Use timeval to benchmark the tests
2365         * Removed SmallFloats and added only Floats. Therefore, SmallIntegers are again 31 bit wide
2367 2007-06-19  Luca Bruno  <lethalman88@gmail.com>
2369         * syx/syx-memory.c (syx_memory_load_image): fixed
2370         
2371         * syx/syx-platform.h: added
2372         
2373         * syx/syx-enums.h (SyxVariables): added Metaclass instanceClass
2374         
2375         * Smalltalk: added tracebacks and other stuff
2377 2007-06-18  Luca Bruno  <lethalman88@gmail.com>
2379         * syx/syx-parser.c (_syx_parser_parse_term): added negation
2381         * syx/syx-lexer.c (_syx_lexer_token_number): added radix numbers
2383         * Done a refactoring to use pointers instead of indexes for oops
2384         
2386 2007-06-17  Luca Bruno  <lethalman88@gmail.com>
2388         * syx/syx-primitives.c (Signal_findHandlerContext): fixed
2390         * syx/syx-error.h (syx_debug): added
2392         * syx/syx-utils.c (syx_send_message): added
2394 2007-06-15  Luca Bruno  <lethalman88@gmail.com>
2396         * Added floats
2398         * syx/syx-memory.c (syx_memory_load_image): do not add extra byte for strings
2399         (strndup): added if missing in other environments
2400         (memdup): same
2402         * SConstruct: added various options and organized for a better debugging
2404         * syx/syx-object.c (syx_string_new): add 1 to the size to hold NULL char
2405         (syx_symbol_new): same
2407         * syx/syx-interp.c (syx_interp_mark_arguments): do not alloc if not arguments are given.
2408         Fixed memory leaks.
2409         Do not pass the execution state trough parameters, instead keep it global.
2410         This would produce a better C/Smalltalk interface
2412         * st/kernel/ObjectMemory.st: adjusted
2413         
2414         * st/kernel/SystemDictionary.st (quit:): added with relative primitive
2416         * syx/syx-error.c: added
2417         
2418         * st/kernel/String.st (size): subtract 1 whith is the NULL char
2420 2007-06-14  Luca Bruno  <lethalman88@gmail.com>
2422         * Removed Glib dependency
2424         * Removed autotools replaced with Scons build system
2426 2007-06-13  Luca Bruno  <lethalman88@gmail.com>
2428         * Just work on Windows using MinGW
2430         * syx/syx-interp.c (syx_interp_send_message): if the message is unary don't create an empty array
2431         (syx_interp_send_super): same
2432         (syx_interp_send_unary): same
2434         * syx/syx-parser.h (struct SyxParser): renamed with starting _
2436         * syx/syx-scheduler.c (syx_scheduler_quit): fixed for now
2438         * Everything has been documented for Doxygen
2439         
2440         * syx/syx-scheduler.c (syx_scheduler_quit): rewrote after GMainLoop has been removed
2442         * syx/syx-bytecode.c (syx_bytecode_free): free_segment is not needed anymore
2444         * syx/syx-primitives.c (ArrayedCollection_replaceFromWith): added
2446         * syx/syx-memory.c (syx_memory_alloc): removed _syx_memory_top
2447         (syx_memory_init): removed _syx_memory_top and fill _syx_freed_memory_top. Realloc _syx_freed_memory too
2448         (syx_memory_free_all): removed, we can use syx_memory_clear
2450 2007-06-12  Luca Bruno  <lethalman88@gmail.com>
2452         * Everything we need to let the Console work men
2454         * syx/syx-utils.c (_syx_cold_parse_class): if superclass changed, we must update the metaclass too
2456         * syx/syx-lexer.c (_syx_lexer_token_symbol): fixed, now includes colons
2458         * tests/*: removed all memory leaks
2459         
2460         * st/kernel/Number.st (to:by:do:): added because needed by dictionary hash tables
2462         * st/kernel/False.st (or:): added
2464         * st/kernel/True.st (or:): added
2466         * st/kernel/Dictionary.st: added
2468         * syx/syx-primitives.c (syx_primitive_at_put): fixed index
2469         (syx_primitive_at): fixed index
2471 2007-06-11  Luca Bruno  <lethalman88@gmail.com>
2473         * syx/syx-memory.c (syx_memory_init): realloc only if memory must be larger
2474         (syx_memory_load_image): if we load an image over another one, be sure we free the previous data
2476         * syx/main.c (main): something new to try out
2478         * 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
2479         (syx_init_basic_streams): removed
2480         (syx_init_system): added, initialize the system from within Smalltalk itself
2482         * syx/syx-interp.c (syx_process_execute_blocking): don't schedule process if has no context to enter
2483         (syx_process_execute_scheduled): same
2485         * syx/syx-utils.c (syx_send_unary_message): added
2486         (syx_send_binary_message): added
2488         * syx/syx-parser.c (_syx_parser_parse_method_message_pattern): removed GString dependency to use a stack'd array
2489         (_syx_parser_do_key_continuation): same
2491         * syx/syx-parser.h (struct SyxParser): removed GTrashStack dependency
2493         * syx/syx-primitives.c (FileStream_fileOp): added and removed others
2495         * syx/syx-memory.h (syx_alloca): added
2496         
2497         * syx/syx-object.h (SYX_NIL, SYX_TRUE, SYX_FALSE): removed
2499         * syx/syx-bytecode.c (syx_bytecode_duplicate_at): fixed
2501 2007-06-10  Luca Bruno  <lethalman88@gmail.com>
2503         * syx/syx-init.h (syx_globals_at_if_absent): added
2505         * syx/syx-object.c (syx_dictionary_at_const_if_absent): added
2506         (syx_dictionary_at_symbol_if_absent): added
2507         (syx_dictionary_at_symbol): raise an error if the key has not been found
2508         (syx_dictionary_at_const): same
2510         * syx/syx-parser.h (struct SyxParser): removed GPtrArrays and added regular stacks for temporary and argument names
2512         * syx/syx-object.c (syx_symbol_new): increase size to hold '\0'
2513         (syx_string_new): increase size to hold '\0'
2515         * tests/testimage.c: added
2517         * syx/syx-interp.c: use transactions when creating new method contexts
2519         * syx/syx-memory.c (syx_memory_clear): added, do the inverse of syx_memory_init
2520         (syx_memory_free_all): added, free all objects except nil, true and false
2521         (syx_memory_save_image): added
2522         (syx_memory_load_image): added
2523         (syx_memory_init): now specify how many objects must be allocated in the heap
2525         * syx/syx-init.c (syx_build_basic): splitted to own only image building process
2526         (syx_quit): added
2527         (syx_fetch_basic): added by splitting syx_build_basic. This function will be used also when loading the image
2529 2007-06-08  Luca Bruno  <lethalman88@gmail.com>
2531         * syx-primitives.c (BlockClosure_newProcess): ovverride parent context with nil
2533 2007-06-07  Luca Bruno  <lethalman88@gmail.com>
2534             
2535         * syx-scheduler.c, syx-interp.c: fixed the process scheduler
2536         
2537         * syx-interp.c (syx_interp_do_primitive): removed
2538         * syx-interp.c (syx_interp_call_primitive): added
2539         * syx-primitives.c (SYX_PRIM_FAIL): added
2540         * syx-primitives.c (SyxPrimitiveFunc): added the method containing the primitive call as argument
2541         * syx-scheduler.c (syx_processor_first_process): added
2542         Added as instance variable
2544         * syx-primitives.c (BlockContext_asContext, BlockContext_valueWithArguments): copy the array to avoid memory leaks
2545         * syx-object.h (SYX_METHOD_PRIMITIVE): added
2546         * syx-interp.c, syx-parser.c: removed do_primitive bytecode to
2547         inline primitive calls
2549 2007-06-05  Luca Bruno  <lethalman88@gmail.com>
2551         * syx-bytecode.c (syx_bytecode_unary_messages, syx_bytecode_binary_messages): used to avoid memory allocation for well known symbol literals
2552         * syx-bytecode.c (syx_bytecode_gen_message): finds any occurrence of the given message into known symbols
2553         All calls have been updated
2554         * syx-interp.c (syx_interp_send_unary, syx_interp_send_binary): handles and send a common message
2556         * syx-object.c: removed is_static field not needed at the moment
2557         All parts have been updated
2558         * syx-init.c (_syx_create_class): changed from FALSE to TRUE the value to be put in has_refs (was a bad mistake)
2559         * syx-memory.c (syx_memory_gc): added some debugging informations
2560         * syx-memory.c (syx_memory_gc_begin, syx_memory_gc_end): added for creating GC transactions
2561         * syx-bytecode.c (syx_bytecode_gen_instruction): generate 16 bit-wide instructions
2562         All calls to it and the interpreter have been updated
2564 2007-06-04  Luca Bruno  <lethalman88@gmail.com>
2566         * configure.ac: removed -pedantic since we use bitfields that are a GCC extension
2567         * 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
2569         * syx-interp.c (syx_interp_leave_context_and_answer): removed an argument because the return context has been inserted into method contexts
2570         * syx-interp.c (syx_interp_send_message): fixed message arguments array creation
2571         * syx-object.c (syx_byte_array_*): added
2572         * syx-object.c (syx_*_context_new): copy arguments to the context arguments stack
2573         * syx-object.h (SYX_METHOD_CONTEXT_RETURN_CONTEXT): moved from block contexts for speed matters
2574         * syx-object.h (SYX_BLOCK_ARGUMENTS_TOP): holds the index to the arguments stack
2575         * syx-object.h (SYX_PROCESSOR_SCHEDULER_*): old mistake SYX_PROCESS_SCHEDULER
2576         * syx-primitives.c (SmallInteger_*): bug fix
2577         * syx-parser.c (_syx_parser_parse_block): now operate on the same parser instead of creating a new one, to share arguments and temporaries
2578         * syx-parser.c (syx_parser_new): removed last two arguments, not needed anymore because of shared scopes
2579         * syx-parser.c (syx_parser_parse): store bytecodes as a ByteArray
2580         * syx-parser.c (_syx_parser_find_*): return -1 instead of 0 since syx_varsize now is not unsigned anymore
2581         * syx-parser.h (SyxParserScope, SyxParserScopeStack): added to share arguments and temporaries between methods and nested blocks
2582         * syx-memory.c (syx_memory_alloc): call syx_memory_gc once the heap is full
2583         * syx-types.h (SYX_IS_POINTER): fixed
2584         * syx-init.c (syx_build_basic): added syx_byte_array_class
2586 2007-06-03  Luca Bruno  <lethalman88@gmail.com>
2588         * syx-memory.c (syx_memory_gc): added a basic implementation of a mark and sweep garbage collector
2589         * syx-memory.c (syx_memory_get_heap): added function
2590         * syx-memory.c (syx_memory_get_heap_size): added function
2591         * syx-utils.c (syx_path_join): removed
2593         * syx-object.c (SyxObject): added is_static, has_refs and is_marked bitfields to use for garbage collection with relative macro accesses
2594         * syx-types.h (syx_varsize): small integers can hold only signed ints
2595         * syx-memory.c (syx_memory_get_heap): added function
2596         * syx-memory.c (syx_memory_free): added function
2597         * syx-utils.c (syx_path_join): fixed possible memory leaks
2598         Calls to syx_object_new* have been fixed
2600         * Added a TODO file
2601         * syx-utils.c (syx_path_join): some stylistic fixes
2603         * Added Doxygen documentation
2605         * syx-types.h: defining TRUE and FALSE booleans when not defined (e.g. when not including glib.h)
2606         * syx-types.h (SYX_SMALL_INTEGER): use double shifting instead of AND/INVERT
2607         * syx-object.c (syx_class_lookup_method): added function and removed the issued macro
2608         * syx-utils.c: removed GError when not needed
2609         * syx-init.c: removed unused GHashTable
2610         * syx-interp.c (syx_exec_state_free): added inline function
2611         * syx-interp.c (syx_exec_state_save): fixed saving the execution state of a process
2612         * Removed all G_BEGIN_DECLS / G_END_DECLS to make use of Doxygen
2614 2007-06-01  Luca Bruno  <lethalman88@gmail.com>
2616         * configure.ac: override standard CFLAGS
2617         * syx-object.c (syx_dictionary_at_symbol_put): return once we found the right place to put the data
2618         * syx-object.c (syx_metaclass_new, syx_class_new): avoid nil values to speed up lookups
2619         * syx-object.c (syx_symbol_new): put the symbol itself instead of SYX_TRUE
2620         * syx-enums.h (SyxTokenType): put string-based token types at the end so that syx_token_free can free strings
2621         * syx-lexer.h: Added SyxToken structure to get rid of GValue
2622         * syx-lexer.c: removed GValue dependency and Glib ascii functions usage
2623         Renamed all static functions
2624         All parts of Syx have been updated with the new behavior of the lexer, including the parser and the tests
2625         * syx-lexer.c (syx_lexer_free): added function
2626         * syx-lexer.c (syx_token_free): added function
2627         * syx-bytecode.c (syx_bytecode_free): added function
2628         * syx-parser.c (syx_parser_free): added function
2629         Renamed all static functions.
2630         * syx-utils.c: completely refactored without using Glib
2631         * syx-utils.h: removed G_VALUE_STRCMP
2632         * Replaced all g_strcasecmp and g_strdup with strcmp and strdup
2633         * syx-init.c (syx_init): removed g_type_init, we do not need GObject for GValue anymore
2634         * st/kernel/initialDecl.st: fixed instance variables according to syx-enums.h
2635         * syx-memory.c (syx_freev): new function to free NULL terminated arrays
2636         * syx-memory.c (_syx_memory): moved from static to dynamic
2637         * syx-memory.c (syx_memory_free): removed because of future garbage collector
2638         * syx-memory.h (SyxMemoryLink): removed with syx_memory_free
2639         * syx-types.h (syx_small_integer_new, syx_character_new): be sure we work on a long before doing bitwise operations
2640         * syx-types.h (syx_char): added type
2641         * syx-types.h (syx_size): changed from unsigned long to long according to standard size_t
2642         Removed lots of Glib memory related dependencies.
2643         Recovered a bunch of memory leaks