1 2009-05-24 Luca Bruno <lethalman88@gmail.com>
3 Fix plugins with MSVC, thanks to Gulam Faruque.
5 * syx/syx-plugins.c (syx_library_open): use GetModuleHandle to get application handle
7 * syx/syx-utils.c (syx_to_wstring, syx_to_string): check for NULL input
9 * msvc/syx-config.h (WITH_PLUGINS): define
11 2009-05-22 Luca Bruno <lethalman88@gmail.com>
13 * msvc/syx-config.h: define HAVE_FSTAT; thanks Gulam Faruque
15 2008-07-16 Luca Bruno <lethalman88@gmail.com>
19 * st/kernel/Integer.st (anyMask:): fixed issue #34
22 2008-07-14 Luca Bruno <lethalman88@gmail.com>
24 * st/kernel/Integer.st (timesRepeat): fixed issue #32
26 2008-06-12 Luca Bruno <lethalman88@gmail.com>
28 * st/kernel/Exception.st (what): improved
30 * st/kernel/SortedCollection.st (sortBlock:): implemented
31 (indexOf): implemented
33 * doc/manual/syx.texi: fixed dir-entry
35 * st/kernel/SortedCollection.st: added
37 2008-06-07 Luca Bruno <lethalman88@gmail.com>
39 == Released 0.1.7 version ==
41 * syx/syx-platform.h (EXPORT): this fixes Mac OSX link errors against _syx_interp_state
43 2008-06-06 Luca Bruno <lethalman88@gmail.com>
45 * src/main.c (_parse_args): startupSystem on WinCE too
47 2008-06-05 Luca Bruno <lethalman88@gmail.com>
49 * syx/syx-primitives.c (Semaphore_waitFor): fixed Windows part
51 2008-06-04 Luca Bruno <lethalman88@gmail.com>
53 * plugins/wingui/plugin-init.c (WndProcedure): fixed for new interpreter
55 * st/kernel/FileStream.st (handle): added
57 * st/kernel/Semaphore.st (waitForWrite, waitForRead): directly use the handle
59 * syx/syx-primitives.c (Semaphore_waitFor): explicitely use GetStdHandle
61 2008-06-02 Luca Bruno <lethalman88@gmail.com>
63 * plugins/readline/SConscript: on some systems -lsyx is required for building plugins with SCons
65 * configure.ac: create syx.pc
67 * Makefile.am: install syx.pc
71 2008-06-01 Luca Bruno <lethalman88@gmail.com>
73 * plugins/x11/Xlib_wrap.c: regenerated for comments and new SWIG macros
75 * plugins/x11/geninterface.sh: added
77 * plugins/gtk/gtk_wrap.c: added comments and removed Gdk threading
79 * plugins/gtk/gobject.i: ignore non-public API
81 * plugins/readline/SConscript: updated for installing Smalltalk sources
85 * doc/Makefile.am: install manpages
87 * doc/manual/language.texi (Block closures): fixed typo
89 * doc/Makefile.am: fixed making documentation
93 * examples/x11: adjusted the example
95 * syx/syx-scheduler.c (_syx_scheduler_find_next_process): check for a valid activeProcess
97 * plugins/gtk/st/GObject.st (when:do:, when:do:send:): accept symbols as signal name
99 * syx/syx-scheduler.c (syx_scheduler_poll_unregister_source): fix re-entrancy troubles
100 (_syx_scheduler_poll_wait): fix re-entrancy troubles
102 * plugins/gtk/st/Gtk.st (main): use the semaphore
104 * plugins/gtk/plugin-init.c: save the semaphore
106 * plugins/gtk/st/GObject.st: moved GCallback here and splitted into GMethodCallback and GBlockCallback
108 * plugins/gtk/plugin-init.c (syx_g_closure_marshal): pass the arguments and be gc-safe
109 (Gtk_mainQuit): remove the idle Process and yield the control
111 2008-05-30 Luca Bruno <lethalman88@gmail.com>
113 * syx/syx-primitives.c (Smalltalk_pluginCall): forgot to pass the failing method
115 * examples/embedding/add.c: fixed to use newinterp API
117 Use #display and #displayNl when possible.
119 2008-05-29 Luca Bruno <lethalman88@gmail.com>
121 * st/kernel/String.st (displayOn): added
123 * st/kernel/Object.st (display, displayNl, displayString, displayOn:): added
125 2008-05-28 Luca Bruno <lethalman88@gmail.com>
127 * syx/syx-scheduler.c (syx_scheduler_remove_process): let's run the next process of the activeProcess
129 * syx/syx-interp.c (syx_process_execute_blocking): unschedule the process at the end
131 * syx/syx-memory.c (syx_memory_save_image): activeProcess can be nil
133 * tests/testscheduler.c (main): no need to clear the scheduler anymore
135 * src/main.c (_parse_args): startup the system from here
137 * syx/syx-init.c (syx_build_basic): drop responsibility to startup the system for embedding purposes
139 * syx/syx-scheduler.c (syx_scheduler_remove_process): fix when the process is the active process
141 * syx/syx-plugins.c (syx_plugins_quit): fixed when building without plugins
142 (syx_plugins_init): fixed when building without plugins
144 * doc/manpage/syx.1: updated
146 * doc/manual/introsyx.texi (Invoking syx): updated
148 * syx/syx-init.c (syx_set_root_path): use SYX_ROOT_PATH
150 * doc/manpage/syx.1: updated
152 * doc/manual/introsyx.texi (Invoking syx): updated
154 * syx/syx-plugins.c (syx_plugins_init): fixed
155 (syx_plugin_load): try all possible plugin paths
157 * syx/syx-platform.h (SYX_ENV_PATH_SEPARATOR_S): added
161 * syx/syx-plugins.c: split plugin paths
162 (syx_plugins_init): implemented
163 (syx_plugins_quit): added
165 * syx/syx-platform.h (SYX_ENV_PATH_SEPARATOR): added
167 * syx/syx-init.c (syx_quit): use plugins_quit
169 2008-05-27 Luca Bruno <lethalman88@gmail.com>
171 * syx/syx-primitives.c (Semaphore_waitFor):
173 * SConstruct: cleaned
177 * syx/syx-primitives.c (FileStream_fileOp): can use symbols
179 * st/kernel/FileStream.st (fileno): added
180 (handleForSemaphore): removed
182 2008-05-26 Luca Bruno <lethalman88@gmail.com>
184 * syx/syx-scheduler-posix.c (_syx_scheduler_load): dropped implementation
185 (_syx_scheduler_save): dropped implementation
187 * syx/syx-scheduler.h: changed add_process and remove_process signatures
189 * syx/syx-scheduler.c (_syx_scheduler_find_next_process): do a simpler round robin
190 (syx_scheduler_add_process, syx_scheduler_remove_process):
192 * syx/syx-object.h (SYX_PROCESSOR_SCHEDULER_FIRST_PROCESS): removed
194 * syx/syx-memory.c (syx_memory_save_image): store the round robin
196 * syx/syx-enums.h (SYX_VARS_PROCESSOR_SCHEDULER_FIRST_PROCESS): removed
198 * st/kernel/initialDecl.st (ProcessorScheduler): removed firstProcess instance variable
200 2008-05-24 Luca Bruno <lethalman88@gmail.com>
202 * syx/SConscript: fix scheduler choice
204 * syx.vcproj: add scheduler-win
206 * makefile.vc (OBJS): compile syx-scheduler-win
208 * plugins/readline/plugin-init.c (syx_plugin_initialize):
210 * plugins/readline/st/Readline.st: added
212 * plugins/readline/Makefile.am:
214 * st/kernel/Console.st: dropped readline
216 2008-05-23 Luca Bruno <lethalman88@gmail.com>
218 * syx/syx-memory.c (_syx_memory_write): nullify C pointers to avoid bad accesses on next startup
220 * syx/syx-error.c (syx_signal): forgot to readd the old code
222 * configure.ac (WIN32): added conditional
226 * syx/Makefile.am (libsyx_la_SOURCES):
228 * syx/syx-scheduler.c: splitted platform code
230 * syx/syx-scheduler-win.c (_syx_scheduler_init_platform): added
232 * syx/syx-scheduler-posix.c (_syx_scheduler_init_platform): added
236 * syx/syx-scheduler.c (syx_scheduler_poll_write_register): updated
238 * syx/syx-scheduler.h:
240 * syx/syx-scheduler.c (_syx_scheduler_find_next_process):
242 * plugins/gtk/plugin-init.c (syx_g_closure_marshal): use iterate
244 * syx/syx-scheduler.c (syx_scheduler_iterate): added
246 2008-05-22 Luca Bruno <lethalman88@gmail.com>
248 * 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
250 * plugins/gtk/plugin-init.c (_syx_gtk_iteration): replaced _syx_gtk_main
251 (syx_g_closure_marshal): do it without threads and in a single process
252 (Gtk_main): register an idle and save the process where to put main loop callback executions
253 (Gtk_mainQuit): register an idle and save the process where to put main loop callback executions
255 * syx/syx-object.h (syx_semaphore_new): added
257 * syx/syx-scheduler.c (syx_scheduler_poll_register_source): added
258 (syx_scheduler_poll_unregister_source): added
259 (_syx_scheduler_poll_wait): check for sources
261 * plugins/gtk/st/GObject.st: move gobject related classes here
263 * plugins/gtk/plugin-init.c (syx_plugin_initialize): non-cold loading and change the loading order
265 * st/kernel/FileStream.st (handleForSemaphore): added
267 * st/kernel/Semaphore.st (waitForWrite, waitForRead): updated
269 * st/kernel/Console.st (nextLine): updated
271 * syx/syx-primitives.c (fileOp): add fileno
272 (Semaphore_waitFor): updated
274 2008-05-20 Luca Bruno <lethalman88@gmail.com>
276 * syx/syx-signal.c (_syx_smalltalk_sighandler): register signals again
278 * st/kernel/Console.st (registerUserInterruptHandler): added
280 * st/kernel/SystemSignal.st: request for being initialized at every startup
282 * syx/syx-init.c (_syx_file_in_basic):
284 * syx/syx-error.c (syx_signal): execute a blocking process for system signals
286 * syx/syx-enums.h (enum):
288 * st/kernel/Signal.st: generalized and separated Exception by SystemSignal
290 * st/kernel/SystemSignal.st: added
292 * st/kernel/initialDecl.st: add HandlerBlock instance variable to both UserInterrupt and TerminationSignal
294 * syx/syx-signal.c (_syx_smalltalk_sighandler): use syx_signal
296 * syx/syx-error.c (syx_error_init): register new errors for system signals
298 * syx/syx-enums.h (SyxErrorType):
300 * st/kernel/Console.st: quit on system signal
302 2008-05-19 Luca Bruno <lethalman88@gmail.com>
304 * syx/syx-error.c: simplified and fixed memory leak
306 * syx/syx-memory.c (_syx_memory_gc_mark): only mark the used part of the stack
307 (syx_memory_gc): save the process state
308 (syx_memory_save_image):
310 2008-05-18 Luca Bruno <lethalman88@gmail.com>
312 * syx/syx-scheduler.c (_syx_scheduler_find_next_process):
314 * st/kernel/Console.st (nextLine): use the semaphore
316 * syx/syx-object.c (syx_semaphore_wait): moved from syx-utils
317 (syx_semaphore_signal): moved from utils
319 * syx/syx-scheduler.c (_syx_scheduler_process_poll): added. Clear the handled FD from the set.
320 (_syx_scheduler_poll_wait):
322 * doc/manual/inheritance.texi: not yet complete
324 * syx/syx-object.c (syx_symbol_new): make a SmallInteger
326 * syx/syx-object.h (syx_symbol_hash): added
328 * st/kernel/Symbol.st (hash): use the cached hash variable
330 * syx/syx-object.c (syx_symbol_new): cache the hash
331 (syx_dictionary_index_of): wants the hash of the symbol key
332 All calls have been updated. This leads to dropping about 8% of executed instructions.
334 * syx/syx-enums.h (enum):
336 * st/kernel/initialDecl.st: add hash variable
338 Updated copyright and bumped version number to 0.1.7.
340 2008-05-17 Luca Bruno <lethalman88@gmail.com>
342 * doc/manual/varscope.texi: begun work
343 maybe complete for now
345 * st/kernel/Console.st: only print last object when a block is executed
347 * src/main.c: convert to UNIX
349 * 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.
351 * st/kernel/SystemDictionary.st (initializeSystem): startupProcess is saved inside the VM
353 * syx/syx-memory.c (_syx_memory_gc_mark): complete marking of detached frames
355 2008-05-16 Luca Bruno <lethalman88@gmail.com>
357 * doc/manual/blocks.texi (Loops): completed
359 2008-05-15 Luca Bruno <lethalman88@gmail.com>
361 * syx/syx-interp.c (syx_interp_enter_context): do not really switch the process
362 (_syx_interp_state_update): checks must be done before calling the method
363 (_syx_interp_switch_process): checks must be done before calling the method
364 (syx_interp_swap_context):
365 (syx_process_execute_scheduled): checks have to be done before calling the method
367 * syx/syx-memory.c (_syx_memory_write_process_stack): fixed warnings
369 * syx/syx-interp.h: add missing interp functions
371 * syx/syx-interp.c (_syx_interp_execute_byte): remove rarely used branch
372 (syx_interp_do_extended): added
373 (syx_interp_mark_arguments):
375 2008-05-13 Luca Bruno <lethalman88@gmail.com>
377 * doc/manual/blocks.texi (Return value of blocks): added
380 * doc/manual/language.texi (Comments): added
382 2008-05-11 Luca Bruno <lethalman88@gmail.com>
384 * doc/manual/commonobjects.texi: filled in but not complete
386 * doc/manual/varscope.texi: added
388 * doc/manual/commonobjects.texi: added
390 * doc/manual/blocks.texi: added
392 * doc/manual/variables.texi: completed
394 * doc/manual/streference.texi (Dictionaries): added
396 * doc/manual/variables.texi: added
398 * doc/manual/methods.texi: added
400 * doc/manual/messages.texi: added
402 * doc/manual/objects.texi: added
404 * doc/manual/language.texi:
406 2008-05-10 Luca Bruno <lethalman88@gmail.com>
408 * doc/manual/language.texi: added
410 * syx/syx-memory.c (_syx_memory_write_process_stack): store stack if the first frames are detached
411 (_syx_memory_write_process_stack): check if the stack has been already wrote
412 (_syx_memory_read): read first detached frames
413 (syx_memory_load_image): first fix pointers
417 2008-05-07 Luca Bruno <lethalman88@gmail.com>
419 * doc/manual/introsyx.texi (Invoking syx): documented
421 2008-05-06 Luca Bruno <lethalman88@gmail.com>
423 * syx/syx-interp.c (syx_interp_context_to_frame): add check
425 * syx/syx-memory.c (_syx_memory_write_frame): save all the stack from locals to the upper frame
426 (_syx_memory_read_lazy_pointer): missing big endian compatibility, rename idx to data
427 (_syx_memory_write_lazy_pointer): give precedence to detached frames
429 2008-05-04 Luca Bruno <lethalman88@gmail.com>
431 * syx/syx-memory.c (_syx_memory_write_frame): receiver is not only an object
432 (_syx_memory_read_process_stack):
434 * syx/syx-scheduler.c (syx_scheduler_add_process): run the given process just after the active process
435 (syx_scheduler_init): set default timeslice to 100
437 * syx/syx-memory.c (enum): rename _BOS to _BOF
438 All calls have been updated.
440 2008-05-02 Luca Bruno <lethalman88@gmail.com>
442 * doc/manpage/syx.1: added
444 * doc/Makefile.am: added
449 * doc/manual/introsyx.texi: splitted from syx.texi
451 * doc/manual/syx.texi (Introducing the Syx environment): basic Strings
452 (What is Smalltalk): Image concept
453 (Index): added Classes and Methods
455 * syx/syx-memory.c (syx_memory_save_image): unmark the object being skipped
456 (_syx_memory_write_object_with_vars): ensure the stack
457 (_syx_memory_write_vars_with_fp): take care of detached frames
459 * syx/syx-scheduler.c (syx_scheduler_remove_process): always check for active process
461 * syx/syx-lexer.c (_syx_char_is_binary_second): temporarly removed '-'
463 * syx/syx-parser.c: support <- assignment
465 * syx/syx-memory.c (_syx_memory_write_frame): fix stack pointer
466 (_syx_memory_write_lazy_pointer): fix on NULL process
468 2008-05-01 Luca Bruno <lethalman88@gmail.com>
470 * doc/manual/syx.texi: added license informations and a brief introduction, renamed from .texinfo
471 (Introducing the Syx environment): moved up
472 (Index): add menu and Concepts section
475 (Introducing the Syx environment): started some docs
477 * doc/manual/fdl-1.2.texi: added
479 Create reference to doc/reference.
482 * doc/manual/syx.texinfo: added
485 (syx_memory_save_image): only store the stack of each process
486 (_syx_memory_write_process_stack): fixed beginning and end of frames
489 (_syx_memory_gc_mark): mark detached frames
493 Fix BOS/EOS sequence for writing and reading.
494 Store block closures that are not attached to any process.
495 Save processes before any other object.
497 2008-04-27 Luca Bruno <lethalman88@gmail.com>
499 * syx/syx-memory.c (_syx_memory_write_frame): only write arguments and temporaries for detached frames
500 (_syx_memory_write_process_stack): check for collected stacks, store the index of the frames
501 (_syx_memory_read_process_stack): seek back by one
503 * syx/syx-interp.c (syx_inter_push_block_closure): only copy arguments and temporaries
505 2008-04-26 Luca Bruno <lethalman88@gmail.com>
507 Do not seek the file, instead read frames as is: this makes the image smaller.
508 Mark beginning and end of whole stacks instead of single frames.
509 Fix reading of frame fields when loading the image.
511 * syx/syx-memory.c (_syx_memory_read): use _read_lazy_pointer and start using to read the process stack
512 (_syx_memory_write_process_stack): store everything in reverse order but saving the index of each frame
514 * syx/syx-memory.c (syx_memory_save_image): skip if object is marked
515 (_syx_memory_gc_sweep): unmark constants
517 * syx/syx-memory.c (_syx_memory_write_object_with_vars): added
518 (_syx_memory_write_lazy_pointer): added
519 (_syx_memory_write_frame): added
520 (_syx_memory_write_process_stack): added
521 (syx_memory_save_image): save the process state before doing any operation
522 (_syx_memory_read_lazy_pointer): added
523 (_syx_memory_read_process_stack): added
525 2008-04-25 Luca Bruno <lethalman88@gmail.com>
527 * syx/syx-memory.c (struct SyxMemoryLazyPointer): added
528 (enum SyxMemoryType): rename RAW to IMMEDIATE and FP to FRAME_POINTER
530 * syx/syx-memory.c (_syx_memory_read): read framePointer variables
531 (syx_memory_load_image): free lazy pointers
533 2008-04-23 Luca Bruno <lethalman88@gmail.com>
535 * syx/syx-memory.c (enum SyxMemoryType): added
536 (_syx_memory_write_vars_with_fp): added
537 (_syx_memory_read): added incomplete handler for frame pointers
538 (syx_memory_load_image):
542 * syx/syx-interp.c (_syx_interp_context_update): removed
543 (syx_interp_frame_to_context): use frame pointer as an index
544 (_syx_interp_switch_process):
545 (syx_interp_frame_to_context): need the stack
547 * syx/syx-primitives.c (ContextPart_parent):
548 (ContextPart_parent):
550 * st/kernel/initialDecl.st (ContextPart): add process variable
554 * syx/syx-signal.c (_syx_save_recovered_image):
556 * src/main.c (_do_recovery):
558 2008-04-22 Luca Bruno <lethalman88@gmail.com>
560 * tests/testinterp.c (main): added another ensure test
562 * st/kernel/Signal.st (handlerContextStartingFrom): added
563 (signal): use a more sane approach
566 * syx/syx-interp.c (syx_interp_do_special): fix block self return
567 (syx_interp_swap_context): implemented
569 2008-04-21 Luca Bruno <lethalman88@gmail.com>
571 * syx/syx-interp.c (_syx_interp_context_update): added
572 (syx_interp_push_block_closure): update this_context to point to the new detached frame
573 (syx_interp_frame_to_context): set arguments not accessible for now, not good for Smalltalk-side future debugging
574 This fixes basic of the exception handling.
576 2008-04-20 Luca Bruno <lethalman88@gmail.com>
578 * st/kernel/Number.st (to:by:do, to:by:reverseDo): slightly optimized
580 * syx/syx-primitives.c (Processor_enter): wrong argument
581 (Processor_swapWith): wrong argument
583 * syx/syx-interp.c (syx_interp_enter_context): missed saving this_context
584 (syx_interp_context_to_frame): added
586 * syx/syx-primitives.c (ContextPart_receiver): added
587 (BlockContext_outerContext): added
589 * st/kernel/BlockContext.st (outerContext, homeContext):
591 * st/kernel/ContextPart.st (tracebackString):
593 * syx/syx-interp.h (struct SyxInterpFrame): add closure
595 * syx/syx-object.h: updated accessors
596 All calls have been updated.
598 * syx/syx-enums.h (enum): add ContextPart enums
600 * st/kernel/initialDecl.st: move receiver to MethodContext and add framePointer to ContextPart
602 * syx/syx-interp.c (syx_interp_frame_to_context): made public
603 (syx_interp_frame_to_context): use closure
605 * syx/syx-primitives.c (_syx_primitive_entries):
606 (ContextPart_parent): added
608 * syx/syx-parser.c (_syx_parser_find_temporary_name): cleaned up, fixes the command line interactive interpreter
610 * st/kernel/Console.st (nextLine):
612 * syx/syx-interp.c (_syx_interp_switch_process): only switch if it's a different process
614 * syx/syx-interp.h (struct SyxInterpState): added process
615 All calls have been updated to use this new member.
617 All tests now works just like the trunk. Have to do more work on the scheduler, though.
619 * syx/syx-interp.h (struct SyxInterpState): removed process_frame
621 * syx/syx-object.c (syx_process_new): initialize bottome frame
623 * syx/syx-primitives.c: updated to match new interpreter internal API
625 * syx/syx-interp.c (_syx_interp_switch_process): fix fetching the frame
626 Refactor most of the functions to request state/process arguments to work concurrency
627 on different processes and execution states.
628 Claned up everything, yet another slightly speedup.
629 All calls have been updated.
631 2008-04-18 Luca Bruno <lethalman88@gmail.com>
633 * syx/syx-parser.c (_syx_parser_find_temporary_name): fixes issue #29
635 * tests/testinterp.c (main): test block recursion (see issue #29)
637 * syx/syx-interp.c (_syx_interp_switch_process): do not save the process state
639 * syx/syx-parser.c (_syx_parser_parse_optimized_block): fix memory leak
641 * syx/syx-interp.c (syx_interp_enter_context): save process state
642 (_syx_interp_switch_process): always switch process
644 * syx/syx-init.c (syx_initialize_system):
646 2008-04-16 Luca Bruno <lethalman88@gmail.com>
648 * syx/syx-primitives.c (BlockClosure_valueWithArguments): forgot part of the implementation
649 (Compiler_parse): fix memory leak
651 * 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
653 * syx/syx-object.c (syx_process_new): reset frame pointer
655 * syx/syx-interp.c (_syx_interp_switch_process): really switch process
657 * syx/syx-parser.c (syx_parser_new): do not erase scopes
659 2008-04-15 Luca Bruno <lethalman88@gmail.com>
661 * syx/syx-interp.h (struct SyxInterpFrame): add detached_frame
663 * syx/syx-interp.c (_syx_interp_frame_to_context): copy the arguments
664 (syx_interp_push_block_closure): detach the current frame
666 * syx/syx-object.h (syx_string_new_unref): renamed from syx_string_new_ref
668 * configure.ac: use -g3 for info and full debug modes
670 * syx/syx-interp.h (SYX_PRIM_FAIL): a lot semplified
672 * syx/syx-parser.c (_syx_parser_find_temporary_name): fix variable name resolution for optimized blocks
674 * syx/syx-interp.c (syx_process_execute_scheduled): usually next instruction is not bigger than the bytecodes count until the end of the process
675 (syx_process_execute_blocked): same here
676 (syx_interp_leave_and_answer): clear the frame
678 * syx/syx-parser.c (_syx_parser_parse_optimized_block): do not create a new scope but share variables with the outer context
680 2008-04-14 Luca Bruno <lethalman88@gmail.com>
682 * syx/syx-parser.c (_syx_parser_parse_optimized_block): increase method temporary stack to hold optimized block temporaries
684 * syx/syx-interp.c (_syx_interp_find_temporary): forgot to change the code when copied find_argument
685 (_syx_interp_find_argument): fixed
687 * syx/syx-interp.h (syx_interp_stack_peek): fix
689 * syx/syx-parser.c (_syx_scope_free): added
690 (syx_parser_free): fix leak
693 * syx/syx-interp.h (struct SyxInterpFrame): removed ensure_block
695 * st/kernel/Set.st: forgot header
697 * syx/syx-interp.c (_syx_interp_find_temporary): added
698 (_syx_interp_find_argument): added
699 (_syx_interp_state_update): obtain syx_uint16 bytecodes
700 (_syx_interp_frame_prepare_new): frame receiver not filled in
701 (syx_interp_do_special): get ensure block from the context, if available
703 2008-04-13 Luca Bruno <lethalman88@gmail.com>
705 * syx/syx-error.c (syx_signal_does_not_understand): stop being a macro
707 * tests/testparser.c (main): updated
709 * syx/syx-parser.c: fix argument and temporary search
711 * syx/syx-utils.c: more info on method lookup failure
713 * syx/syx-interp.c (_syx_interp_switch_process): wrong way to get the process frame bottom
714 (syx_interp_enter_context): be sure we have a frame
715 (_syx_interp_frame_prepare_new): be aware of null frames and null stack pointers
717 * syx/syx-enums.h: update VM-used variable names
719 * st/kernel/initialDecl.st: variables have been updated to match interpreter implementation
721 * syx/syx-primitives.c: incredibly cleaned up block messages
723 Lots of changes to the interpreter and the parser.
724 Arguments and temporaries of blocks won't be put into the same stack of the home method.
725 Changed the way of dealing with contexts and processes.
726 The interpreter won't create any context except the ones demanded outside of it.
727 All contexts informations are now kept inside the process stack.
729 2008-02-20 Luca Bruno <lethalman88@gmail.com>
731 * syx/syx-object.h (syx_string_new_ref): renamed from syx_string_new_unref
732 All calls have been updated
734 * plugins/readline/plugin-init.c (ReadLine_readline): reference the returned string instead of creatinga new one
736 * syx/syx-primitives.c (FileStream_fileOp): fixed possible memory leak
738 * st/kernel/Console.st: added ConsoleChunkReader to fix multiple statements handling
740 * syx/syx-object.h (syx_string_new): use SYX_VSPRINTF
742 * syx/syx-utils.h (SYX_VSPRINTF): added
744 * syx/syx-utils.c (syx_vsprintf): removed
745 (syx_sprintf): removed
747 2008-02-18 Luca Bruno <lethalman88@gmail.com>
749 * syx/syx-lexer.c (_syx_lexer_token_identifier): fix var:=val assignment
750 (_syx_lexer_token_number): fix D.! syntax, where D is a digit (issue #28)
752 * syx/syx-interp.h (syx_interp_is_initialized): removed, use syx_system_initialized instead
753 All calls have been updated.
755 * syx/syx-parser.c (_syx_parser_parse_term): raise a new error for bad expression starts
757 2008-01-25 Luca Bruno <lethalman88@gmail.com>
759 Replaced all occurrences of NotFound signal with #errorNotFound.
761 * st/kernel/initialDecl.st: (NotKeyed): added class
763 * st/kernel/Dictionary.st (printOn): stop after maxPrint
765 * st/kernel/ArrayedCollection.st (with:with:with): added
766 (with:with:with:with): added
768 * st/kernel/Interval.st (species): added
770 (collectClass): removed
772 * st/kernel/Collection.st (copyEmptyForCollect):
774 (collectClass): removed
775 (with:with:with): added
776 (with:with:with:with): added
779 (printOn): stop after maxPrint
782 * st/kernel/Object.st (species): added
783 (errorNotFound): added
785 2008-01-23 Luca Bruno <lethalman88@gmail.com>
787 * syx/syx-parser.c (_syx_parser_parse_term): fixed bug which allowed things such as [ * ]!
789 * syx/syx-object.h (syx_string_new): allow variadic arguments
791 * syx/syx-error.c (syx_signal): ensure the interpreter is running
793 * syx/syx-parser.c: use syx_signal instead of syx_error
795 * syx/syx-utils.c (syx_sprintf): added
796 (syx_vsprintf): added
798 2008-01-18 Luca Bruno <lethalman88@gmail.com>
800 * st/kernel/Number.st (to:by:reverseDo): added
802 * st/kernel/OrderedCollection.st (addAll): remove since implemented in Collection
805 (incrementLastIndex:): added
806 (shiftFrom:by): added
813 (removeAtIndex): fixed
815 * st/kernel/String.st (basicAt): check for bounds
816 (basicAt:put): check for bounds
818 * st/kernel/SequenceableCollection.st (copyReplaceAll:with): fixed bug with String usage
820 2008-01-16 Luca Bruno <lethalman88@gmail.com>
822 * syx/syx-object.c (syx_dictionary_bind_if_absent): fixed read error
824 * syx/syx-types.h (syx_malloc0): do not alloc 0 size
825 (syx_calloc): do not alloc 0 size
826 (syx_malloc): do not alloc 0 size
828 * syx/syx-object.c (syx_dictionary_rehash): fix memory leak
830 * st/kernel/Dictionary.st (keyAtValue): added
831 (keyAtValue:ifAbsent): added
836 (associationAt:ifAbsent): added
837 (includesAssociation): added
838 (removeAssociation): added
840 * st/kernel/Bag.st (add:withOccurrences): added
842 * st/kernel/Set.st: adjusted categories
844 * st/kernel/Collection.st (inject:into): added
846 2008-01-15 Luca Bruno <lethalman88@gmail.com>
848 * syx/syx-init.c (_syx_file_in_basic): file in Random.st
850 * st/kernel/Random.st: added
852 * st/kernel/Integer.st (bitInvert): added
854 (printOn:base): added
855 (storeOn:base): added
856 (printStringRadix): added
857 Added missing license header
859 * st/kernel/Float.st: change converting to truncation and round off
861 * st/kernel/Integer.st: change converting to truncation and round off
864 * st/kernel/Number.st (rem): added
865 (strictlyPositive): added
868 * st/kernel/Character.st (newPage): added
873 Rename #codePoint: occurrences to #value:. Keep #codePoint: anyway.
875 * st/kernel/Integer.st (radix):
877 * st/kernel/String.st:
879 * st/kernel/Number.st (readFrom):
881 * st/kernel/Character.st (asciiValue): added
884 * syx/syx-init.c (_syx_file_in_basic): file in Date.st
886 * st/kernel/Date.st: added
888 * st/kernel/initialDecl.st: add Date class
890 * st/kernel/Magnitude.st (between): moved to comparing category
893 Implement storeOn, storeString and printOn for collections.
895 * st/kernel/SequenceableCollection.st (storeOn): added
897 * st/kernel/Collection.st (printOn): added
900 * st/kernel/Behavior.st (storeOn): added
902 * st/kernel/Integer.st (storeOn): added
904 * st/kernel/Character.st (storeOn): added
906 * st/kernel/String.st (storeOn): added
908 * st/kernel/Object.st (storeOn): added
910 (printOn): use the right class article
912 * st/kernel/Behavior.st (storeOn): added
914 * st/kernel/Association.st (storeOn): added
916 * st/kernel/Stream.st (space): added
918 2008-01-14 Luca Bruno <lethalman88@gmail.com>
920 * syx/syx-primitives.c (SmallInteger_print): removed since unused
922 Implement printOn: and use Transcript instead of #printNl.
924 * st/kernel/Signal.st:
925 * st/kernel/False.st:
926 * st/kernel/Integer.st:
928 * st/kernel/Object.st:
929 * st/kernel/Behavior.st:
930 * st/kernel/Metaclass.st:
931 * st/kernel/String.st:
932 * st/kernel/Character.st:
933 * st/kernel/Symbol.st:
934 * st/kernel/Console.st:
935 * st/kernel/Fraction.st:
936 * st/kernel/UndefinedObject.st:
937 * st/kernel/Association.st:
939 2008-01-07 Luca Bruno <lethalman88@gmail.com>
941 == Released 0.1.6 version ==
943 2008-01-06 Luca Bruno <lethalman88@gmail.com>
945 Fixed examples build and various dist issues
947 * configure.ac: missing -DWITH_PLUGINS
949 * plugins/Makefile.am: added
951 2008-01-05 Luca Bruno <lethalman88@gmail.com>
953 Preparing for 0.1.6 release.
955 2007-12-29 Luca Bruno <lethalman88@gmail.com>
957 * st/kernel/initialDecl.st: store commandLine object instead of commandLineArguments
959 Added makefiles for examples.
961 * syx/Makefile.am: remove macros from here
963 * st/kernel/CommandLine.st: added
965 * src/main.c (_parse_args): do not handle -c
967 * 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.
968 (_syx_file_in_basic): added CommandLine.st
970 * st/kernel/SystemDictionary.st (initializeSystem:): added
971 (startupSystem): handle -c and -e options
973 * configure.ac: use SYX_OTHER_LIBS and SYX_OTHER_CFLAGS for libsyx and readd path macros
975 2007-12-26 Luca Bruno <lethalman88@gmail.com>
977 Working on issue #22.
979 * st/kernel/Console.st (setupHelp): added
983 * syx/syx-lexer.c (_syx_lexer_token_string): unlimited strings
984 (_syx_lexer_token_symbol): unlimited symbols
985 (_syx_lexer_token_identifier): unlimited identifiers
987 Fix image snapshot inside scripts.
989 * st/kernel/FileStream.st (nextPut): removed
990 (nextPutAll): removed
992 * st/kernel/SystemDictionary.st (startupSystem): save the startupProcess before fileing files
994 * st/kernel/Console.st (nextLine): flush stdout
996 * syx/syx-primitives.c (FileStream_fileOp): return stdin/stdout/stderr, use fwrite instead of fputs, read instead of fread and fgetc
998 2007-12-25 Luca Bruno <lethalman88@gmail.com>
1002 * st/kernel/Compiler.st (runMultipleAndDeclarations): copy literal array because the primitive will modify it even it's constant
1004 * syx/syx-primitives.c (FileStream_fileOp): use fread instead of fgets
1006 2007-12-24 Luca Bruno <lethalman88@gmail.com>
1008 Changed FileStream behavior to handle FILE* instead of file descriptors
1010 * syx/syx-primitives.c (FileStream_fileOp):
1012 * st/kernel/FileStream.st:
1014 2007-12-24 Rahul <blufox@gmail.com>
1015 * plugins/x11/plugin-init.c: updated the module prefix to X11
1017 * plugins/x11/x11gen.rb: updated module prefix to X11 and to remove
1021 * plugins/x11/Xlib.i: update with NeedWidePrototypes to compile in solaris
1023 * plugins/x11/st/XDisplay.st: added instead of XDisplay
1025 * plugins/x11/st/Xlib.st: updated with new module prefix X11 instead of
1027 Xlib and remove XlibXlib
1029 * plugins/x11/st/Display.st: removed
1031 * plugins/x11/st/XEvent.st: updated by subclassing X11XEvent
1033 * plugins/x11/SConscript: updated to install Xlib.st
1035 * plugins/x11/Xlib_wrap.c: updated with new classnames
1037 * plugins/x11/swig.rb: updated the module prefix.
1039 2007-12-24 Luca Bruno <lethalman88@gmail.com>
1041 * st/kernel/Behavior.st: fixed parsing instance and class variable names
1043 * configure.ac: enable mantainer mode, check for pkg-config and add prereq
1045 * syx/syx-object.c (syx_dictionary_rehash): missing check
1047 2007-12-23 Luca Bruno <lethalman88@gmail.com>
1049 * plugins/x11/st/Wm.st: removed
1051 * plugins/x11/plugin-init.c: do not include Xlib_wrap.c
1053 * plugins/x11/Xlib.i:
1055 * plugins/x11/SConscript: compile Xlib_wrap.c
1057 * plugins/x11/Makefile.am: compile Xlib_wrap.c
1059 * configure.ac: enable debug level and fix plugins support
1061 * tests/stsupport/TestCStruct.st: update according to the latest changes and add tests for unions
1063 * tests/testforeignstruct.c (main): test unions
1065 Specify CStruct/CUnion fields with the same order as real C structs/unions
1066 for instance #(char f1) instead of the old #(f1 char).
1068 * st/foreign/CPointer.st (asByteArray): added
1071 * st/foreign/CStructFieldTypePointer.st: added
1073 * st/foreign/CStructFieldType.st: handle pointers with a different class
1075 * st/foreign/CUnion.st: added
1077 * st/foreign/CUnionGenerator.st: added
1079 * syx/syx-init.c (_syx_file_in_basic): file in CUnion.st and CUnionGenerator.st
1081 * syx/syx-primitives.c (CPointer_asString): added
1082 (CPointer_asByteArray): added
1084 * plugins/wingui/Makefile.am: fix install dir
1086 * plugins/readline/Makefile.am: fix install dir
1088 * plugins/gtk/Makefile.am: fix install dir
1090 * plugins/x11/Makefile.am: fix install dir
1092 2007-12-21 Luca Bruno <lethalman88@gmail.com>
1094 Build plugins and install desktop files using the GNU build system.
1096 * plugins/wingui/Makefile.am: added
1098 * plugins/gtk/Makefile.am: added
1100 * plugins/readline/Makefile.am: added
1102 * plugins/x11/Makefile.am: added
1104 * share/Makefile.am: added
1106 Run tests into the tests directory.
1108 * tests/SConscript (builder_test): use abspath and build into the tests directory
1110 * Makefile.am (SUBDIRS): add tests
1112 * tests/Makefile.am: added
1114 * configure.ac: add st files for the C foreign interface
1116 2007-12-20 Luca Bruno <lethalman88@gmail.com>
1118 * tests/stsupport/TestCStruct.st (assertField): test float and doubles
1120 * tests/testforeignstruct.c (main): test float and doubles
1122 * syx/syx-primitives.c (CStructFieldType_sizeOfPointer): added
1123 (CStructFieldType_sizeOfLong): added
1125 * st/foreign/CStructFieldType.st: added C types sizes in bytes and long/pointer primitives to retrieve the size.
1126 * st/foreign/CStruct.st
1128 2007-12-19 Luca Bruno <lethalman88@gmail.com>
1130 * SConstruct: merge CFLAGS
1131 use gcc as preferred compiler
1132 merge CC LINK and AR
1134 * share/syximage.desktop: added comment translation, updated to latest standards and do not display the entry in the menus (thanks to Thilo Pfennig)
1136 * share/syx.desktop: added comment translation and updated to latest standards (thanks to Thilo Pfennig)
1138 * syx/syx-init.c (syx_init): give precedence to the given root directory
1140 * configure.ac: removed unuseful line
1142 * tests/stsupport/TestCStruct.st:
1143 Created Test1Struct, Test2Struct and Test3Struct for testing read/write accessors.
1144 (expectOffsets:from:): renamed to testOffsets:from:
1145 (testOffsets:from:):
1149 * tests/testforeignstruct.c (main): create read/write tests
1151 * st/foreign/CStruct.st (primOn:type:at): added
1152 (primOn:type:at:put): added
1154 * st/foreign/CStructFieldSpec.st (compileAccessorsOn): added
1156 * st/foreign/CStructGenerator.st (compileAccessorsOn): implemented
1158 * st/foreign/CStructFieldType.st (compileAccessorsOn:named:atOffset): added
1159 (compileReadAccessorsOn:named:atOffset): added
1160 (compileWriteAccessorsOn:named:atOffset): added
1161 (initialize): largeInteger renamed to long
1163 * syx/syx-primitives.c (CStruct_on_type_at): added
1164 (CStruct_on_type_at_put): added
1168 * syx/syx-object.c (syx_class_initialize): renamed to syx_object_initialize
1169 (syx_object_initialize): added
1171 2007-12-18 Luca Bruno <lethalman88@gmail.com>
1173 * st/foreign/CStructGenerator.st (alignFields): cleaned the code
1175 * st/foreign/CStructFieldSpec.st (alignAccordingToPreviousField): fixed
1176 (nextAlignedOffset): added
1178 * tests/testforeignstruct.c: added
1180 Moved CPointer and CObject to st/foreign.
1182 * SConstruct: install st/foreign files
1184 * st/kernel/String.st (isCapitalized): added
1186 * syx/syx-init.c (_syx_file_in_basic): file in st/foreign files
1188 * st/foreign: added foreign structure interface support for C
1190 2007-12-17 Luca Bruno <lethalman88@gmail.com>
1192 * plugins/x11: added (thanks to Rahul aka blufox)
1194 * SConstruct: build x11 plugin
1196 * st/kernel/CPointer.st: added
1198 * st/kernel/CObject.st (free): added
1203 * syx/syx-object.c (syx_class_initialize): added
1205 * syx/syx-interp.h (syx_interp_is_initialized): added
1207 * syx/syx-init.c (_syx_file_in_basic): file in CPointer.st and CObject.st
1209 * syx/syx-primitives.c (CPointer_free): added
1211 * plugins/SConscript: add x11 plugin
1213 * plugins/gtk/SConscript: add Swig interface files
1215 2007-12-16 Luca Bruno <lethalman88@gmail.com>
1217 * st/kernel/CObject.st: added
1219 * syx/syx-init.c (_syx_file_in_basic): file in CObject.st
1221 2007-12-14 Luca Bruno <lethalman88@gmail.com>
1223 == Released 0.1.5 version ==
1225 New process/context API
1227 * plugins/wingui/plugin-init.c (WndProcedure):
1228 * plugins/gtk/plugin-init.c (syx_g_closure_marshal):
1229 * plugins/gtk/plugin-init.c (syx_plugin_initialize):
1230 * syx/syx-interp.h (syx_interp_get_current_process): added
1232 2007-11-18 Luca Bruno <lethalman88@gmail.com>
1234 * st/kernel/ArrayedCollection.st (withAll:startingAt): added
1236 * st/kernel/OrderedCollection.st (asArray): added
1238 * syx/syx-interp.c (syx_exec_state_fetch): updated to complain new process execution
1240 * syx/syx-object.c (syx_process_new): do not require a context anymore
1241 (syx_method_context_new): setup the Process to hold the new context and copy arguments into the stack
1242 (syx_block_context_new): same as method context, and use the same frame of the outer context
1243 All calls have been updated
1245 * Removed all stacks from contexts and created a stack per process
1247 * Gave an important speed boost up
1249 * syx/syx-primitives.c (ArrayedCollection_replaceFromToWithStartingAt): in substitution of ArrayedCollection_replaceFromToWith
1250 (StdIOStream_nextPut): added
1251 (StdIOStream_nextPutAll): added
1252 (CompiledMethod_runOn): added in substitution of manual method context creation from Smalltalk
1254 2007-11-08 Luca Bruno <lethalman88@gmail.com>
1256 * SCons and GNU build: added support for gprof and internal profiling
1258 * syx/syx-profile.h: added
1260 * syx/syx-profile.c: added
1262 2007-11-02 Luca Bruno <lethalman88@gmail.com>
1264 * examples/web/coldbrowser.st: embedding example of Syx into a CGI application
1266 * syx/syx-object.h (syx_string_new_unref): added
1268 * st/kernel/OrderedCollection.st: remove tally and implement relative indexes
1269 (removeAtIndex:): implemented
1270 (at:): reimplemented
1271 (at:put:): reimplemented
1273 2007-11-01 Luca Bruno <lethalman88@gmail.com>
1275 * st/kernel/Dictionary.st: fixed rehashing
1276 renamed incrementNumElements to incrementTally
1278 * examples/web: added
1280 2007-08-29 Luca Bruno <lethalman88@gmail.com>
1282 * syx/syx-object.h (SYX_BLOCK_CONTEXT_ENSURE_BLOCK): added instance variable
1284 * st/kernel/BlockClosure.st (ensure:): fixed block ensuring
1286 * syx/syx-interp.c (syx_interp_do_special): support block ensuring on self-return and stack-return
1288 * configure.ac: support build under MSYS
1290 2007-08-28 Luca Bruno <lethalman88@gmail.com>
1292 * Added support for GNU building system
1294 2007-08-27 Luca Bruno <lethalman88@gmail.com>
1296 * syx/SConscript: compile static objects before shared
1298 * SConstruct: install files contained in the share directory, call update-desktop-database and update-mime-database
1300 * st/kernel/ContextPart.st (showTraceback): renamed to tracebackString, show the real methodClass
1302 * syx/syx-object.h (SYX_OBJECT_IS_SYMBOL): added
1304 * syx/syx-init.c (syx_initialize_system): set syx_system_initialized to TRUE
1306 * syx/syx-error.c (syx_signal): if system is not initialized, call syx_error ()
1307 All calls have been updated
1309 * Renamed numElements variable to tally as designed by Smalltalk-80
1311 * st/kernel/Behavior.st (setInstanceVariableNames): fixed to scan the given string of variable names
1313 * st/kernel/YXTools.st: renamed to MVC.st
1315 2007-08-26 Luca Bruno <lethalman88@gmail.com>
1317 * st/kernel/Behavior.st (setInstanceVariableNames): added
1319 * st/kernel/Metaclass.st: fixed metaclass creation
1321 * st/kernel/Behavior.st: fixed class creation
1323 * st/kernel/Dictionary.st (at:ifAbsent:): added
1325 * syx/syx-utils.c (syx_nanotime): added
1327 Fixed English in some comments, thanks to billijoex.
1329 * syx/syx-utils.c (syx_cold_parse_methods): restore the lexer if the syntax is not the expected for parsing method definitions
1331 Default compiler is now the C compiler, not the ST anymore. The ST compiler will be mantained
1334 * syx/syx-lexer.c (syx_lexer_next_chunk): do not truncate the text by one char if it's at the end
1336 * syx/syx-parser.c (syx_parser_parse): be able to skip message pattern
1337 All calls have been updated
1339 * st/kernel/Compiler.st (runMultipleAndDeclarations): added
1341 2007-08-24 Luca Bruno <lethalman88@gmail.com>
1343 * syx/syx-error.h: got rid of varargs macros
1345 * syx/syx-platform.h (SYX_BEGIN_DECLS): begins declarations for cplusplus
1346 (SYX_END_DECLS): ends declarations for cplusplus
1347 All headers have been updated
1349 2007-08-22 Luca Bruno <lethalman88@gmail.com>
1351 * syx/syx-platform.h (syx_strdup): added
1352 (strndup): renamed to syx_strndup and moved from syx-types.h
1353 (malloc, malloc0, calloc, free): moved from syx-types.h
1354 All calls have been updated
1356 * All mixed declarations and code changed to allow strict ISO C compilation
1358 * All comments changed to complain ANSI C
1360 * syx/syx-object.h (struct SyxObject): bit-fields were removed for -pedantic, the size didn't vary
1362 * syx/syx-utils.c: issue #15 (Krzysztof Kowalczyk)
1364 * Fixed issue #14 (kkowalczyk)
1366 2007-08-21 Luca Bruno <lethalman88@gmail.com>
1368 * examples/embedding/SConscript: fix use of -rdynamic
1370 * Applied patch of issue #13
1372 * syx/syx-signal.c: signal function to be optional
1374 2007-08-20 Luca Bruno <lethalman88@gmail.com>
1376 == Released 0.1.4 version ==
1378 * Missing documentation was covered for Doxygen
1380 2007-08-19 Luca Bruno <lethalman88@gmail.com>
1382 * src/main.c (_parse_args): an comand line option parser was created to replace getopt
1384 * examples/console/SConscript (target): added
1386 * examples/SConscript: added
1388 * examples/embedding/SConscript: added
1390 * syx.desktop: added
1392 * syx.sln: added for MSVC support
1394 * syx.vcproj: added for MSVC support
1396 * syx/syx-plugins.c (_syx_plugin_default_method): added
1397 (syx_plugins_init): do not create a static method on initialization because it's not being inserted in a GC root
1399 2007-08-17 Luca Bruno <lethalman88@gmail.com>
1401 * plugins/gtk/gtk.i: remove pango dependency temporarly
1403 * plugins/gtk/pango.i: removed temporarly
1405 * plugins/gtk/st/PangoAttrList.st: removed temporarly
1407 * plugins/gtk/SConscript: link to gdk-win32
1409 2007-08-16 Luca Bruno <lethalman88@gmail.com>
1411 * plugins/gtk/plugin-init.c (syx_plugin_initialize): parse all remaining st files
1412 (syx_g_closure_marshal): leave gdk threads before entering the smalltalk callback
1414 * plugins/gtk/st/GtkTools.st: added a textview for evaluating code
1416 * plugins/gtk/st/Gtk.st: added missing GTK+ classes
1418 * st/kernel/YXTools.st (onDoIt): evaluate code
1420 * st/kernel/Compiler.st (identifierToken): handle identifier:= as an assigment
1422 * st/kernel/FileStream.st (StdIOStream): added class and methods for standard I/O
1423 (open:for:): support append mode, read and write create (w+)
1425 * syx/syx-primitives.c (FileStream_fileOp): added more checks, use O_CREAT flags for write, support w+ and append mode
1427 * syx/syx-scheduler.c (syx_scheduler_add_process): fixed process scheduling
1429 * syx/syx-signal.c (_syx_internal_sighandler): save a recovered copy of the image on SIGSEGV or SIGILL
1430 (_syx_save_recovered_image): added
1432 * src/main.c (_do_recovery): added for recovering an image from a possibly broken Process
1434 2007-08-15 Luca Bruno <lethalman88@gmail.com>
1436 * tests/testscheduler.c: fixed blocks to use the right number of arguments
1438 * plugins/gtk/st/GtkTextView.st: added
1440 * SConstruct: rootdir option has been added
1441 support for documentation installation/clean has been added
1442 replaced doc command with doc option
1444 2007-08-14 Luca Bruno <lethalman88@gmail.com>
1446 * plugins/gtk/st/GtkTextView.st: added
1448 * plugins/gtk/st/GtkTextMark.st: added
1450 * plugins/gtk/st/GtkTextTag.st: added
1452 * plugins/gtk/st/GtkTextTagTable.st: added
1454 * st/kernel/Object.st (perform methods): check argument count
1456 * syx/syx-error.h (syx_signal_create_context): added
1458 * syx/syx-parser.c (_syx_parser_parse_block_message_pattern): save argumentCount
1459 (_syx_parser_parse_method_message_pattern): save argumentCount
1461 * syx/syx-object.h (SYX_CODE_ARGUMENT_COUNT): instance variable added do CompiledCode
1463 2007-08-13 Luca Bruno <lethalman88@gmail.com>
1465 * makefile.vc (OBJS): missed new syx-signal.obj
1467 * st/kernel/FileStream.st (fileIn): handle scripting header
1469 * syx/syx-utils.c (syx_show_traceback): added
1471 * st/kernel/SystemSignal.st: added
1473 * syx/syx-signal.c: added
1475 * plugins/gtk/st/GtkTextIter.st: added
1477 * syx/syx-lexer.c: usage of pushed_back char has been fixed to build for PowerPC
1479 2007-08-12 Luca Bruno <lethalman88@gmail.com>
1481 * syx/syx-interp.c: missed endianness compatibility for optimized blocks
1483 * st/kernel/SystemDictionary.st (haveBigEndianness): removed
1485 * src/main.c (_getopt_do): -c option has been added
1487 * st/kernel/SystemDictionary.st (continueStartup): a new variable has been added to specify if the startup sequence must continue after fileing in files
1489 * syx/syx-platform.h (SYX_PLUGIN_PATH): added
1491 * SConstruct: option 'plugindir' has been added which belongs by default to the machine-dependent directory $libdir/syx
1493 2007-08-11 Luca Bruno <lethalman88@gmail.com>
1495 * plugins/gtk/st/GtkTextBuffer.st: added but doesn't work yet because of other Gtk dependencies
1497 * st/kernel/initialDecl (CompiledCode): argumentCount and temporaryCount have been renamed to argumentStackSize and temporaryStackSize and moved to CompiledMethod
1498 (CompiledBlock): argumentsTop has been renamed to argumentStackTop
1500 * syx/syx-enums.h: instance variables of CompiledCode, CompiledMethod and CompiledBlock have been updated
1502 * syx/syx-object.c: method and block context creation have been updated according to the above refactoring
1504 * st/kernel/PositionableStream.st (peek): answer nil if at the end
1507 * syx/syx-lexer.c (_syx_lexer_token_symbol): support for quoted symbols
1509 * st/kernel/Compiler.st (initializeStream): support for quoted symbols
1511 * syx/syx-init.c (syx_set_root_path): save the root path anyway also if it doesn't exist
1513 * src/main.c (_getopt_do): fixed issue #11
1515 * syx/syx-primitives.c (FileStream_fileOp): assert the object is a string for nextPutAll:
1517 * plugins/wingui/SConscript: fixed building
1519 Renamed all 'class' to 'klass' to support C++ compilation.
1520 Applied issue #9 patch
1522 2007-08-10 Luca Bruno <lethalman88@gmail.com>
1524 Refactored all inline to be inserted into headers (issue #9).
1525 Added dllimport and dllexport attributes when building DLLs.
1527 * syx/syx-memory.c (syx_freev): removed
1529 * plugins/gtk/st/GtkScrolledWindow.st: added
1531 * plugins/gtk/st/GtkAdjustment.st: added
1533 * plugins/gtk/plugin-init.c (syx_g_closure_marshal): added marshal function for GClosure
1535 * plugins/gtk/st/GObject.st (GClosure): added wrapper
1537 * syx/syx-utils.c (syx_send_messagev): added
1539 * syx/syx-plugins.c (syx_plugin_symbol): added
1541 * st/kernel/SystemDictionary.st (plugin:cSymbol:): added with primitive
1543 2007-08-09 Luca Bruno <lethalman88@gmail.com>
1545 * syx/syx-scheduler.c (syx_scheduler_remove_process): set next process to be active
1547 * syx/syx-primitives.c (ArrayedCollection_replaceFromToWith): added yet more checks
1549 * syx/syx-plugins.c (syx_plugin_call_interp): support C calls to nil plugin (main program)
1551 * st/kernel/Compiler.st (indexOfInstance): support C calls to nil plugin (main program)
1553 * SConstruct: added inline checks (issue #9)
1555 * syx/syx-platform.h: inline defines (issue #9)
1557 * syx/syx-parser.c: indented file and fixed typo (issue #10)
1558 (_syx_parser_parse_primitive): support C calls to the main program
1560 * syx/syx-utils.c (syx_do_it_blocking): added
1562 2007-08-08 Luca Bruno <lethalman88@gmail.com>
1564 Added support for MSVC compilation (issue #8)
1566 * syx/syx-plugins.c (syx_plugin_call): added, previous was renamed to syx_plugin_call_interp
1567 (syx_plugins_init): added for creating a default method to send #primitiveFailed
1568 Added support for main program handle (NULL filename)
1570 * st/kernel/SystemDictionary.st (plugin:cCall:withArguments:): added with relative primitive
1571 (cCall:withArguments:): added
1573 * syx/syx-utils.c (syx_file_in_blocking): added
1575 * examples/embedding: added 4 kind of examples
1577 * syx/SConscript: include syx-config.h to be installed
1579 2007-08-07 Luca Bruno <lethalman88@gmail.com>
1581 * st/kernel/YXTools.st: added model-view-controller classes and basic Workspace and WorkspaceView
1583 * plugins/gtk/st/GtkTools.st: added GtkWorkspace and GtkWorkspaceView
1585 * plugins/gtk/st/GtkBox.st: added wrapper for GtkBox, GtkHBox and GtkVBox
1587 * plugins/gtk/st/GtkButton.st: added wrapper
1589 * plugins/gtk/pango.i: added basic SWIG interface
1591 * plugins/gtk/plugin-init.c: fixed threaded main loop
1593 2007-08-06 Luca Bruno <lethalman88@gmail.com>
1595 * syx/syx-object.c (syx_dictionary_index_of): added
1596 (syx_dictionary_rehash): added
1597 (syx_dictionary_at_symbol_put): rehash when full
1599 Changed dictionary behavior to use linear probing
1600 Detached Gtk smalltalk files to be packaged alone
1601 Create a SWIG interface to wrap Gtk
1603 2007-08-05 Luca Bruno <lethalman88@gmail.com>
1605 * st/kernel/BlockClosure.st (ensure:): fixed
1606 (ifCurtailed:): added
1608 * st/kernel/String.st: added comparing methods
1610 (subStrings:): added
1611 (asUppercase): added
1612 (asLowercase): added
1614 * st/kernel/OrderedCollection.st: added size buffering for new elements
1616 * st/kernel/Number.st (/): added zero division check
1618 * st/kernel/Signal.st: added ZeroDivide
1620 * Added basic converting methods to collections
1622 2007-08-04 Luca Bruno <lethalman88@gmail.com>
1624 * st/kernel/SequenceableCollection.st (replaceFrom:with:): fixed stop index
1626 * st/kernel/Interval.st (at:): added
1628 (start, stop, step): added accessors
1631 * st/kernel/Number.st (to:by:do:): support for negative steps
1632 (to:by:reverseDo:): removed
1634 * st/kernel/SequenceableCollection.st (from:to:by:keysAndValuesDo:): added
1635 (from:to:by:do:): added
1637 * st/kernel/Collection.st (copyClass): added
1638 (collectClass): added
1640 * SConstruct: add the examples directory to the source distribution
1642 2007-08-03 Luca Bruno <lethalman88@gmail.com>
1644 * syx/syx-primitives.c (Object_perform): fixed arguments
1645 (Object_performWithArguments): fixed too
1647 * st/kernel/Compiler.st (symbolToken): fixed binary symbol parsing
1650 * st/kernel/Number.st (readFrom:): fixed parsing
1652 * st/kernel/Interval.st: added
1654 * syx/syx-init.c (syx_build_basic): send #initializeFirstSystem instead of #initialize
1656 * st/kernel/ArrayedCollection.st (copyWithout:): added refinement
1658 * st/kernel/Collection.st (copyWithout:): added
1660 * st/kernel/SequenceableCollection.st (copyReplaceAll:with:): added
1661 (matchSubcollection:startingAt:): added
1662 (copyReplaceFrom:to:with:): added
1663 (copyReplaceFrom:to:withObject:): added
1664 (copyReplacing:withObject:): added
1666 2007-08-02 Luca Bruno <lethalman88@gmail.com>
1668 * st/kernel/TextCollector.st: use #perform:with: to send message to the proxy
1670 * st/kernel/Behavior.st (initializeSubclassOf): create a method dictionary
1672 * syx/syx-object.c (syx_metaclass_new): create a method dictionary
1673 (syx_class_new): create a method dictionary
1675 * st/kernel/Object.st (respondsTo:): added
1677 (perform:with:): added
1678 (perform:with:with:): added
1679 (perform:with:with:with): added
1680 (perform:withArguments): added
1682 * st/kernel/Behavior.st (doesUnderstand:): added
1684 * st/kernel/Dictionary.st (includesKey:): added
1686 * st/kernel/Set.st: added rehashing methods
1687 added numElements instance variable
1689 * st/kernel/Dictionary.st: added rehashing methods
1690 added numElements instance variable
1692 * st/kernel/ObjectMemory.st (atData:put:): added with primitive
1694 * st/kernel/Link.st: removed since unused anymore
1696 2007-08-01 Luca Bruno <lethalman88@gmail.com>
1698 * syx/syx-interp.c (syx_process_execute_blocking): save/restore the active process when running blocking processes
1700 * syx/syx-interp.h (SYX_PRIM_FAIL): add the arguments array to the GC transaction
1702 2007-07-30 Luca Bruno <lethalman88@gmail.com>
1704 == Released 0.1.3 version ==
1706 * st/kernel/Character.st (isXDigit): added
1708 * st/kernel/Compiler.st (literalArrayToken): fixed parsing when the array contains numbers
1710 * st/kernel/Number.st (readFrom:): parse radix numbers
1712 * syx/syx-parser.c (_syx_parser_parse_literal_array): character parsing in the array was missed
1714 * SConstruct: updated the help message
1716 * Documentate more functions
1718 * tests/testinterp.c: fix to run after the startup changes
1720 2007-07-29 Luca Bruno <lethalman88@gmail.com>
1722 * st/kernel/CompiledMethod.st: fixed inherited methods
1724 * st/kernel/initialDecl.st: fixed inheritance for compiled codes according to syx-enums.h
1726 * plugins/gtk/SConscript: fix Gtk+ build
1728 * plugins/wingui: added plugin
1730 * syx/syx-scheduler.c (syx_scheduler_run): missing static
1732 * syx/syx-plugins.c: handle unicode win32 api
1734 * syx/syx-platform.h: emulate errno for platforms that doesn't have support for it
1736 * syx/syx-primitives.c (FileStream_fileOp): return 0 if fstat is not available
1738 * syx/syx-error.h (syx_error): show a MessageBox on WindowsCE
1740 * syx/syx-utils.c (syx_cold_file_in): say we have 1000000 characters in a standard file if fstat is not available
1741 (syx_to_wstring): added
1742 (syx_to_string): added
1744 * st/kernel/WinWorkspace.st: added
1746 * syx/syx-init.c: fixed number of instance variables for Smalltalk
1747 (syx_initialize_system): remove previous startupProcess and call #startupSystem: in a new scheduled process
1748 (syx_init): force image to be in the root device for embedded Windows CE
1750 * syx/syx-types.h: added syx_wstring and syx_wsymbol types
1752 * st/kernel/TextCollector.st (cr): show also the carriage return
1754 * st/kernel/SystemDictionary.st (startupSystem:): (was initializeSystem:) handle startup requests
1756 * src/main.c (_do_getopt): restrictive support to missing getopt
1757 force WinWorkspace to startup on WindowsCE
1759 * src/SConscript: do not create the default image if we're cross compiling
1761 * syx/SConstruct: added WINGUI option to enable/disable the syx-wingui plugin
1762 define WINCE macro when compiling for Windows CE
1763 let getopt, fstat, access, getenv and perror be optional functions
1764 do not specify c99 standard when cross compiling to WindowsCE since the library doesn't handle ANSI calls
1766 2007-07-26 Luca Bruno <lethalman88@gmail.com>
1768 * SConstruct: added 'shared' and 'static' options
1770 * st/kernel/Compiler.st: fixed stream positioning to handle cascading
1772 * st/kernel/ObjectMemory.st (setConstant:): added
1774 * st/kernel/Compiler.st (genLiteral:): set literals to be constant
1776 * syx/syx-init.c (syx_initialize_system): pass command line arguments to the Smalltalk initializer
1777 (syx_init): initialize command line arguments
1779 * st/kernel/SystemDictionary.st (commandLineArguments): added variable with accessor
1780 (initializeSystem:): fileIn the first argument
1782 2007-07-25 Luca Bruno <lethalman88@gmail.com>
1784 * syx/syx-interp.c (syx_interp_do_special): ensure condition is boolean
1786 * syx/syx-object.c (syx_class_lookup_method): class for super messages must be specified instead of a specific alghoritm
1787 (syx_class_lookup_method_binding): same
1789 * syx/syx-enums.h (SyxVariables): Do not include unused instance variables in CompiledBlock
1790 All calls have been updated, also in Smalltalk.
1792 * st/kernel/SequenceableCollection.st (replaceFrom:with:): use self size instead of the given collection one
1795 * st/kernel/CompiledMethod.st (CompiledCode): moved accessors from CompiledMethod and added methodClass
1797 * st/kernel/WriteStream.st: added some other initialization for other streams
1799 * st/kernel/Stream.st: added access mode
1801 * st/kernel/FileStream.st (fileIn): added
1804 * syx/syx-primitives.c (FileStream_fileOp): new operation to obtain the size of the file; return nil for #next when at EOF
1805 (ArrayedCollection_replaceFromToWith): fixed size of the effective replacement and added checks
1806 (String_compile): removed
1808 2007-07-24 Luca Bruno <lethalman88@gmail.com>
1810 Fixed a big bug relative to super messages updating all calls.
1812 * st/kernel/Number.st (readFrom:): fixed float parsing
1814 * st/kernel/Compiler.st (CompilerLexer): include the stream as instance variable instead of subclassing ReadStream
1816 2007-07-23 Luca Bruno <lethalman88@gmail.com>
1818 * st/kernel/String.st (compileFor:): a refactor of old #compile using the ST compiler
1820 * syx/syx-init.h (SYX_INIT_MEMORY_SIZE): changed default size from 20000 objects to 100000 objects
1822 * syx/syx-init.c (syx_initialize_system): addded
1824 * st/kernel/SystemDictionary.st (initialize): added
1825 (initializeSystem): call all system initialization object requests
1826 (registerForSystemInitialization:): added
1828 * syx/syx-utils.c (syx_find_first_non_whitespace): added
1830 * syx/syx-parser.c (syx_parser_parse): save text in methods
1832 * syx/syx-object.h (SYX_METHOD_TEXT): added 'text' instance variable to CompiledCodes
1834 * SConstruct (endianness): added option to manually specify the endianness of the machine
1835 (host): added option to cross-compile for the specified machine
1837 * st/kernel/Compiler.st (duplicateAt:): added
1838 (doContinuation:): support cascades
1840 2007-07-22 Luca Bruno <lethalman88@gmail.com>
1842 * SConstruct: cache options
1843 added support for cross compiling
1845 * st/kernel/Compiler.st (CompilerParser): added whileTrue: and whileFalse: optimized blocks
1846 (parseNameTerm:): added
1848 (CompilerLexer): do not skip when at the end of the stream
1849 fixed super receiver
1851 * st/kernel/Dictionary.st (associationAt:): added
1853 * st/kernel/CompiledMethod.st (CompiledBlock): initialize from parser
1855 * st/kernel/Association.st (VariableBinding): added several methods
1857 * st/kernel/Behavior.st (compile:): added
1859 * st/kernel/Number.st (fromStream:): skip back the stream if it's not a float
1861 2007-07-20 Luca Bruno <lethalman88@gmail.com>
1863 * st/kernel/Compiler.st: added optimized conditional blocks
1865 * st/kernel/Number.st (fromStream:): ensure the character is not nil
1867 2007-07-19 Luca Bruno <lethalman88@gmail.com>
1869 * st/kernel/Magnitude.st (between:and:): moved from Number
1871 * st/kernel/Behavior.st (allSuperclassesDo:): fixed
1873 * st/kernel/CompiledMethod.st (fromParser:): added
1874 (initializeParser:): added
1876 * st/kernel/Character.st: handle magnitude
1878 * st/kernel/Compiler.st (CompilerParser): done, missing cascades and optimized blocks
1880 * st/kernel/Stack.st: added
1882 2007-07-17 Luca Bruno <lethalman88@gmail.com>
1884 * syx/syx-bytecode.c (syx_bytecode_duplicate_at): increase stack size when duplicating objects
1886 * st/kernel/SequenceableCollection.st (indexOf:): added
1887 (indexOf:startingAt:ifAbsent:): use #= instead of #==
1889 * st/kernel/Compiler.st: parse literal arrays
1890 (CompilerBytecode): added
1892 * st/kernel/Object.st (caseOf:otherwise:): added
1894 2007-07-16 Luca Bruno <lethalman88@gmail.com>
1896 * syx/syx-object.c (syx_class_lookup_method_binding): fixed to handle super messages
1897 (syx_class_lookup_method): idem
1898 All calls have been updated
1900 * syx/syx-lexer.c (_syx_lexer_token_string): support single quotes into strings
1901 (_syx_lexer_token_binary): support for binary symbols up to 2 characters
1903 * st/kernel/initialDecl.st (ReadStream): added
1905 * st/kernel/Compiler.st: added
1907 * st/kernel/Float.st (*): added
1909 * st/kernel/String.st (asNumber): added
1911 * syx/syx-memory.c: save object->is_constant in the image
1913 * syx/syx-platform.h (syx_bswap_16): added
1914 (SYX_COMPAT_SWAP_16): added
1915 (SYX_COMPAT_SWAP_32): added
1917 2007-07-15 Luca Bruno <lethalman88@gmail.com>
1919 * syx/syx-platform.h (syx_bswap_32): wrap bswap_32
1921 * SConstruct (check_endianness): added to check endianness
1922 (byteswap.h): added for optional check
1924 * syx/syx-memory.c: first attempt for the image to be compatible with different endianness
1926 * src/SConscript: let it work on MacOSX (PPC)
1928 * plugins/gtk/SConscript: do not compile GTK if it's not found
1930 * st/kernel/Character.st: applied Sam Philips's patch that covers more ANSI
1932 * st/kernel/Number.st (reciprocal): added
1936 * st/kernel/Integer.st (gcd:): added
1938 * st/kernel/Fraction.st (reduce): added
1943 (reciprocal): added refinement
1945 (<, >, <=, >=, =, ~=): added
1948 * syx/syx-memory.c (syx_memory_gc_end): fixed GC transactions ending
1949 (syx_memory_gc): save/restore GC transaction state to hold #finalize messages
1951 * syx/syx-lexer.c (_syx_lexer_token_number): fixed small integer parsing
1953 2007-07-14 Luca Bruno <lethalman88@gmail.com>
1955 * st/kernel/LargeInteger.st (/): added
1959 * st/kernel/Number.st (//): added
1962 * st/kernel/Float.st (/): added
1966 * st/kernel/Integer.st (radix:): added
1967 (printString): added
1969 * syx/syx-primitives.c (SmallInteger_div): added overflow check
1971 * syx/syx-types.h (SYX_SMALL_INTEGER_DIV_OVERFLOW): added
1973 * 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)
1975 * st/kernel/SmallInteger.st (/): added
1977 * st/kernel/Fraction.st: added
1980 2007-07-13 Luca Bruno <lethalman88@gmail.com>
1982 == Released 0.1.2 version ==
1984 * syx/syx-memory.c (GC transactions): use multiple-level transactions
1986 * st/kernel/Float.st (truncated): added
1988 * st/kernel/SmallInteger.st (quo:): added and remove #/ fake
1990 2007-07-12 Luca Bruno <lethalman88@gmail.com>
1992 * syx/syx-primitives.c (Object_at_put): prevent from modifying constant literals
1993 (ByteArray_at_put): idem
1995 * syx/syx-object.h (struct SyxObject): added is_constant flag
1997 * st/kernel/Number.st (to:by:reverseDo:): added
1999 * st/kernel/ArrayedCollection.st (copyWith:): added
2001 * st/kernel/Collection.st (copyWith:): added
2003 * st/kernel/SequenceableCollection.st (findFirst:): added
2010 (from:to:keysAndValuesDo:) added
2012 2007-07-11 Luca Bruno <lethalman88@gmail.com>
2014 * SConstruct: build on Mac OS
2016 * syx/SConscript: call ldconfig on POSIX during installation
2018 * syx/syx-object.c (SYX_SMALL_INTEGER_MUL_OVERFLOW): added
2019 (SYX_SMALL_INTEGER_SHIFT_OVERFLOW): added
2021 * syx/syx-memory.c (syx_memory_save_image): save large integers taking care of that Syx built without the Bignum support
2023 * syx/syx-interp.c (syx_process_execute_blocking): be safe against scheduling processes
2025 * syx/syx-primitives.c (LargeInteger): return a SmallInteger when we can
2027 * syx/syx-bytecode.c (syx_bytecode_gen_message): special unary and binary messages need to be rewritten
2029 * syx/syx-interp.c (syx_send_binary_message): fixed possibly memory corruption
2031 2007-07-10 Luca Bruno <lethalman88@gmail.com>
2033 * SConstruct: use syx/syx-config.h instead of config.h
2035 * Added support for infinite-precision numbers
2037 * syx/syx-object.h (SYX_CLASS_FINALIZATION): added
2039 * syx/syx-object.c (syx_object_free): added object finalization
2040 (syx_large_integer_new): added
2041 (syx_large_integer_new_integer): added
2042 (syx_large_integer_new_mpz): added
2044 * syx/syx-types.h (SYX_SMALL_INTEGER): fixed small integer unpacking
2046 * syx/syx-interp.c (syx_interp_send_binary): use of syx_int32 for primitives
2047 (syx_inter_send_unary): idem
2049 * SConscript: fixed readline detecting
2051 * plugins/gtk/plugin-init.c (SYX_FUNC_PRIMITIVE): fixed according to previous objects refactoring
2053 * syx/syx-init.c (syx_fetch_basic): fetch CPointer class
2055 2007-07-09 Luca Bruno <lethalman88@gmail.com>
2057 * syx/syx-parser.c (syx_parser_parse): push nil at the bottom of block context stack
2059 * st/kernel/String.st: added basic refinements
2061 * st/kernel/ByteArray.st: (byteAt:): added
2062 (byteAt:put:): added
2064 * syx/syx-primitives.c (ByteArray_at): return a small integer
2065 (ByteArray_at_put): require a small integer
2067 * syx/syx-init.h (SYX_INIT_MEMORY_SIZE): doubled initial memory size to 20000 objects
2069 * st/kernel/Bag.st: added
2071 * st/kernel/WriteStream.st: added
2073 * st/kernel/BlockClosure.st (value:value:): added
2075 * st/kernel/Dictionary.st (associationsDo:): added
2076 (do:): fixed to enumarate values
2077 (keysAndValuesDo:): added
2079 (select:, collect:, reject:): added for refinement
2081 * st/kernel/ArrayedCollection.st (select:, collect:, reject:): added for refinement
2083 * st/kernel/Collection.st (copyEmpty): added
2085 * syx/syx-parser.c (_syx_parser_parse_term): on error, print the expression if it's a string
2087 * st/kernel/IdentityDictionary.st: added
2089 2007-07-06 Luca Bruno <lethalman88@gmail.com>
2091 * syx/syx-error.c (syx_error_init): what a missing static
2093 * st/kernel/Dictionary.st: subclass Collection and remove hashTable variable
2095 * 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.
2097 * syx/syx-object.c (syx_object_vars_size): added
2099 * st/kernel/SmallInteger.st (*): added temporarly to get rid of primitives for finding indexes
2101 * st/kernel/Set.st: added
2103 * st/kernel/SequenceableCollection.st (=): added
2105 2007-07-05 Luca Bruno <lethalman88@gmail.com>
2107 == Released Syx 0.1.1 version ==
2109 * syx/syx-scheduler.c (_syx_scheduler_save): remove fd_sets from being written into the image
2111 * src/SConscript: fixed bdist command
2113 * st/kernel/Object.st (error:): added
2114 (doesNotUnderstand:): fixed to complain the standard
2116 * st/kernel/Dictionary.st (indexOf:): small but important fix
2117 (new): fixed initialization
2118 (initializeTable:): added
2120 * st/kernel/Signal.st (handlerContext): added
2122 (messageText): added
2123 (description): added
2124 (MessageNotUnderstood>>message:receiver:): added
2126 * syx/syx-primitives.c (Signal_findHandlerContext): removed
2128 2007-07-04 Luca Bruno <lethalman88@gmail.com>
2130 * Added bdist command to create a binary distribution
2132 * Added method caching to unary and binary messages too
2134 * Implemented linear hash tables, similiar to double hash
2136 * st/kernel/SmallInteger.st (/): added temporarly
2139 * st/kernel/Dictionary.st (at:): use hashing
2140 (at:put:): use hashing
2143 * syx/syx-object.c (syx_string_hash): added
2144 (syx_object_hash): fixed
2145 (syx_dictionary_at_symbol_put): renamed
2147 2007-07-03 Luca Bruno <lethalman88@gmail.com>
2149 * st/kernel/Integer.st: added
2154 * st/kernel/Number.st (between:and:): added
2159 * st/kernel/SystemDictionary.st (at:put:): accept only symbol keys
2161 * st/kernel/ObjectMemory.st (snapshot:): was a bad bug
2163 * st/kernel/Collection.st: added some useful methods
2165 * syx/syx-primitives.c (FileStream_fileOp): fixed opening filenames
2167 * syx/syx-parser.c (_syx_parser_do_key_continuation): inlined whileFalse:
2169 * st/kernel/PositionableStream.st: added
2171 * st/kernel/Behavior.st: added subclassing
2173 2007-07-02 Luca Bruno <lethalman88@gmail.com>
2175 == Released Syx 0.1 version ==
2177 * SConstruct: be able to run Syx in every location on Windows using
2180 * st/kernel/SequenceableCollection.st (at:ifAbsent:): added
2183 (copyFrom:to:): added
2185 * st/kernel/Collection.st (collect:): added
2188 (detect:ifNone:): added
2189 (occurrencesOf:): added
2193 * st/kernel/True.st,False.st (& |): added
2195 * st/kernel/Object.st (copy): added with relative primitive Object_copy
2199 2007-07-01 Luca Bruno <lethalman88@gmail.com>
2201 * syx/syx-memory.c (syx_memdup): added
2203 * Fixed a big bug in block closures. Had to add a new bytecode to fix that
2205 * syx/syx-object.c (syx_object_copy): added
2207 * syx/syx-object.h (SYX_CLASS_SUBCLASSES): added instance variable to Behavior
2209 * syx/syx-memory.h (SYX_MEMORY_INDEX_OF): added
2211 * 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
2212 (syx_array_remove): added
2213 (syx_array_add): added
2215 * syx/syx-error.c (syx_error_init): message not understoods are handled differently
2217 * st/kernel/Object.st (doesNotUnderstand). added (issue #2)
2219 * syx/syx-interp.c (syx_interp_send_unary): use syx_does_not_understand (issue #2)
2220 (syx_interp_send_binary): idem
2221 (syx_interp_send_message): idem
2222 (syx_interp_send_super): idem
2224 * syx/syx-error.h (syx_does_not_understand): added (issue #2)
2226 * syx/syx-init.c (_syx_file_in_basic): load Magnitude.st
2228 * src/main.c (_getopt_do): do not set the ImageFileName
2230 * syx/syx-primitives.c (Object_identifyHash): added
2232 * Added LargeNegativeInteger support
2234 2007-06-30 Luca Bruno <lethalman88@gmail.com>
2236 * Reenstablished sequence of key/value pairs in hash tables
2238 * Done some changes to the Smalltalk code
2240 2007-06-29 Luca Bruno <lethalman88@gmail.com>
2242 * syx/syx-primitives.c: added support for both positive and negative large integers
2244 * syx/syx-init.c (syx_quit): free initial paths
2246 * 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
2248 * syx/syx-interp.c (syx_process_execute_blocking): do not take care of yields
2249 (syx_exec_state_fetch): reset bytecodes count to stop execution of blocking processes
2251 * syx/syx-parser.c (_syx_parser_parse_term): support for large integers
2253 * syx/syx-types.h (SYX_SMALL_INTEGER_CAN_EMBED): added
2254 (SYX_SMALL_INTEGER_OVERFLOW): added
2256 * syx/syx-lexer.c (_syx_lexer_token_number): added support for large integers
2258 2007-06-28 Luca Bruno <lethalman88@gmail.com>
2260 * syx/syx-primitives.c (SmallInteger_asFloat): added
2262 * Smalltalk: add number coercing, now you can do arithmetic between integers and floats
2264 * src/main.c (_help): added
2266 * Added sdist target to scons files to create a source distribution
2268 * Added the license to all files
2270 * syx/syx-interp.c (syx_interp_send_message): simple method caching
2271 (syx_interp_send_super): idem
2273 * syx/syx-bytecode.c (syx_bytecode_gen_message): create an unbound method reference
2275 * syx/syx-object.c (syx_dictionary_binding_at_symbol): renamed. Return an Association of key -> value to bind variables
2276 (syx_dictionary_binding_at_symbol_if_absent): idem
2277 (syx_dictionary_bind): added
2278 (syx_dictionary_bind_if_absent): added
2279 (syx_dictionary_bind_set_value): added
2280 (syx_class_lookup_method_binding): added
2282 2007-06-27 Luca Bruno <lethalman88@gmail.com>
2284 * Fixed initializing the image path
2286 * SConstruct (win32 options): fixed image path
2287 (install): fixed st files installation
2289 * tests/testinterp.c (main): added tests for class variables
2291 * syx/syx-bytecode.c (syx_bytecode_push_global): renamed to push_binding_variable, so it can be used also for class variables
2292 (syx_bytecode_assign_binding_variable): added
2294 * syx/syx-parser.c (_syx_parser_parse_name_term): search for class variables
2296 * syx/syx-utils.c (_syx_cold_parse_names): added to be reused with class variables
2297 (_syx_cold_parse_class): added class variables
2299 * syx/syx-interp.c (syx_interp_push_global): push the value of the variable binding instead of looking up the symbol each time
2300 (syx_interp_push_global): renamed to push_binding_variable, to push class variables or globals
2302 * syx/syx-init.h (syx_globals_link_at): added
2304 * syx/syx-object.c: removed unused syx_dictionary_at_const and syx_dictionary_at_const_if_absent
2305 (syx_dictionary_new): hold Associations instead of a sequence of keys and values
2306 (syx_dictionary_link_at_symbol): added
2307 (syx_dictionary_link_at_symbol_if_absent): added
2309 2007-06-26 Luca Bruno <lethalman88@gmail.com>
2311 * src/main.c (_getopt_do): added option -S to quit once built the image from scratch
2313 * src/SConscript (syx executable): create the default image once installed
2315 * SConstruct: added win32 installation with only a single root prefix
2317 * syx/syx-init.c (syx_quit): missed scheduler quitting
2319 * syx/syx-primitives.c (Semaphore_waitFor): added
2321 * syx/syx-scheduler.h (struct SyxSchedulerPoll): added
2323 * syx/syx-scheduler.c: added syncronized I/O multi-plexing with select during scheduling
2324 (syx_scheduler_poll_read_register): added
2325 (syx_scheduler_poll_write_register): added
2326 (syx_scheduler_quit): free allocated memory for read/write polls
2328 * plugins/readline/plugin-init.c (Readline_readline): free returned string
2330 * syx/SConscript (install): added includes
2332 * tests/testscheduler.c (main): added semaphores test
2334 2007-06-25 Luca Bruno <lethalman88@gmail.com>
2336 * st/kernel/initialDecl.st (Semaphore): be fixed containing an array of waiting processes
2338 * syx/syx-object.h (SYX_SEMAPHORE_LIST): added
2339 (SYX_SEMAPHORE_SIGNALS): added
2341 * syx/syx-utils.c (syx_semaphore_wait): readded
2342 (syx_semaphore_signal): readded
2344 * syx/syx-object.c (syx_object_grow_by): changed to a macro
2345 (syx_object_resize): added
2347 * INSTALL: changed to reflect the Syx building system
2349 2007-06-24 Luca Bruno <lethalman88@gmail.com>
2351 * SConstruct (install): remove Smalltalk files when uninstalling
2353 * syx/syx-object.c (syx_symbol_new): return nil if NULL is supplied
2354 (syx_string_new): idem
2356 * syx/syx-primitives.c (BlockClosure_asContext): fixed GC transaction
2357 (BlockClosure_valueWithArguments): idem
2358 (BlockClosure_newProcess): idem
2359 (BlockClosure_value): use nil instead of an empty array
2360 (BlockClosure_on_do): idem
2362 * syx/syx-interp.h (SYX_PRIM_ARGS): added to assert the number of arguments
2364 * Added install target
2366 * syx/syx-plugins.c (syx_plugin_call): load the plugin not loaded yet
2368 * syx/syx-error.h (syx_warning): added
2370 * src/main.c (_getopt_do): added error checks
2372 2007-06-23 Luca Bruno <lethalman88@gmail.com>
2374 * src/main.c: added getopt
2376 * Added readline plugin
2378 * syx/syx-lexer.c (_syx_lexer_token_number): added exponent for floats
2380 2007-06-22 Luca Bruno <lethalman88@gmail.com>
2382 * Doxyfile (LATEX_OUTPUT): added
2383 (OUTPUT): moved to build directory
2385 * Separated executable binaries from libraries by adding directory src
2387 * Now the build process is done in a separate directory named 'build'
2389 * Fixed scheduled processes
2391 * Added plugins support
2393 * Added a basic Gtk plugin for test
2395 2007-06-21 Luca Bruno <lethalman88@gmail.com>
2397 * syx/syx-object.c (syx_object_new_size): alloc for byte size if object has no references
2399 * Use timeval to benchmark the tests
2401 * Removed SmallFloats and added only Floats. Therefore, SmallIntegers are again 31 bit wide
2403 2007-06-19 Luca Bruno <lethalman88@gmail.com>
2405 * syx/syx-memory.c (syx_memory_load_image): fixed
2407 * syx/syx-platform.h: added
2409 * syx/syx-enums.h (SyxVariables): added Metaclass instanceClass
2411 * Smalltalk: added tracebacks and other stuff
2413 2007-06-18 Luca Bruno <lethalman88@gmail.com>
2415 * syx/syx-parser.c (_syx_parser_parse_term): added negation
2417 * syx/syx-lexer.c (_syx_lexer_token_number): added radix numbers
2419 * Done a refactoring to use pointers instead of indexes for oops
2422 2007-06-17 Luca Bruno <lethalman88@gmail.com>
2424 * syx/syx-primitives.c (Signal_findHandlerContext): fixed
2426 * syx/syx-error.h (syx_debug): added
2428 * syx/syx-utils.c (syx_send_message): added
2430 2007-06-15 Luca Bruno <lethalman88@gmail.com>
2434 * syx/syx-memory.c (syx_memory_load_image): do not add extra byte for strings
2435 (strndup): added if missing in other environments
2438 * SConstruct: added various options and organized for a better debugging
2440 * syx/syx-object.c (syx_string_new): add 1 to the size to hold NULL char
2441 (syx_symbol_new): same
2443 * syx/syx-interp.c (syx_interp_mark_arguments): do not alloc if not arguments are given.
2445 Do not pass the execution state trough parameters, instead keep it global.
2446 This would produce a better C/Smalltalk interface
2448 * st/kernel/ObjectMemory.st: adjusted
2450 * st/kernel/SystemDictionary.st (quit:): added with relative primitive
2452 * syx/syx-error.c: added
2454 * st/kernel/String.st (size): subtract 1 whith is the NULL char
2456 2007-06-14 Luca Bruno <lethalman88@gmail.com>
2458 * Removed Glib dependency
2460 * Removed autotools replaced with Scons build system
2462 2007-06-13 Luca Bruno <lethalman88@gmail.com>
2464 * Just work on Windows using MinGW
2466 * syx/syx-interp.c (syx_interp_send_message): if the message is unary don't create an empty array
2467 (syx_interp_send_super): same
2468 (syx_interp_send_unary): same
2470 * syx/syx-parser.h (struct SyxParser): renamed with starting _
2472 * syx/syx-scheduler.c (syx_scheduler_quit): fixed for now
2474 * Everything has been documented for Doxygen
2476 * syx/syx-scheduler.c (syx_scheduler_quit): rewrote after GMainLoop has been removed
2478 * syx/syx-bytecode.c (syx_bytecode_free): free_segment is not needed anymore
2480 * syx/syx-primitives.c (ArrayedCollection_replaceFromWith): added
2482 * syx/syx-memory.c (syx_memory_alloc): removed _syx_memory_top
2483 (syx_memory_init): removed _syx_memory_top and fill _syx_freed_memory_top. Realloc _syx_freed_memory too
2484 (syx_memory_free_all): removed, we can use syx_memory_clear
2486 2007-06-12 Luca Bruno <lethalman88@gmail.com>
2488 * Everything we need to let the Console work men
2490 * syx/syx-utils.c (_syx_cold_parse_class): if superclass changed, we must update the metaclass too
2492 * syx/syx-lexer.c (_syx_lexer_token_symbol): fixed, now includes colons
2494 * tests/*: removed all memory leaks
2496 * st/kernel/Number.st (to:by:do:): added because needed by dictionary hash tables
2498 * st/kernel/False.st (or:): added
2500 * st/kernel/True.st (or:): added
2502 * st/kernel/Dictionary.st: added
2504 * syx/syx-primitives.c (syx_primitive_at_put): fixed index
2505 (syx_primitive_at): fixed index
2507 2007-06-11 Luca Bruno <lethalman88@gmail.com>
2509 * syx/syx-memory.c (syx_memory_init): realloc only if memory must be larger
2510 (syx_memory_load_image): if we load an image over another one, be sure we free the previous data
2512 * syx/main.c (main): something new to try out
2514 * 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
2515 (syx_init_basic_streams): removed
2516 (syx_init_system): added, initialize the system from within Smalltalk itself
2518 * syx/syx-interp.c (syx_process_execute_blocking): don't schedule process if has no context to enter
2519 (syx_process_execute_scheduled): same
2521 * syx/syx-utils.c (syx_send_unary_message): added
2522 (syx_send_binary_message): added
2524 * syx/syx-parser.c (_syx_parser_parse_method_message_pattern): removed GString dependency to use a stack'd array
2525 (_syx_parser_do_key_continuation): same
2527 * syx/syx-parser.h (struct SyxParser): removed GTrashStack dependency
2529 * syx/syx-primitives.c (FileStream_fileOp): added and removed others
2531 * syx/syx-memory.h (syx_alloca): added
2533 * syx/syx-object.h (SYX_NIL, SYX_TRUE, SYX_FALSE): removed
2535 * syx/syx-bytecode.c (syx_bytecode_duplicate_at): fixed
2537 2007-06-10 Luca Bruno <lethalman88@gmail.com>
2539 * syx/syx-init.h (syx_globals_at_if_absent): added
2541 * syx/syx-object.c (syx_dictionary_at_const_if_absent): added
2542 (syx_dictionary_at_symbol_if_absent): added
2543 (syx_dictionary_at_symbol): raise an error if the key has not been found
2544 (syx_dictionary_at_const): same
2546 * syx/syx-parser.h (struct SyxParser): removed GPtrArrays and added regular stacks for temporary and argument names
2548 * syx/syx-object.c (syx_symbol_new): increase size to hold '\0'
2549 (syx_string_new): increase size to hold '\0'
2551 * tests/testimage.c: added
2553 * syx/syx-interp.c: use transactions when creating new method contexts
2555 * syx/syx-memory.c (syx_memory_clear): added, do the inverse of syx_memory_init
2556 (syx_memory_free_all): added, free all objects except nil, true and false
2557 (syx_memory_save_image): added
2558 (syx_memory_load_image): added
2559 (syx_memory_init): now specify how many objects must be allocated in the heap
2561 * syx/syx-init.c (syx_build_basic): splitted to own only image building process
2563 (syx_fetch_basic): added by splitting syx_build_basic. This function will be used also when loading the image
2565 2007-06-08 Luca Bruno <lethalman88@gmail.com>
2567 * syx-primitives.c (BlockClosure_newProcess): ovverride parent context with nil
2569 2007-06-07 Luca Bruno <lethalman88@gmail.com>
2571 * syx-scheduler.c, syx-interp.c: fixed the process scheduler
2573 * syx-interp.c (syx_interp_do_primitive): removed
2574 * syx-interp.c (syx_interp_call_primitive): added
2575 * syx-primitives.c (SYX_PRIM_FAIL): added
2576 * syx-primitives.c (SyxPrimitiveFunc): added the method containing the primitive call as argument
2577 * syx-scheduler.c (syx_processor_first_process): added
2578 Added as instance variable
2580 * syx-primitives.c (BlockContext_asContext, BlockContext_valueWithArguments): copy the array to avoid memory leaks
2581 * syx-object.h (SYX_METHOD_PRIMITIVE): added
2582 * syx-interp.c, syx-parser.c: removed do_primitive bytecode to
2583 inline primitive calls
2585 2007-06-05 Luca Bruno <lethalman88@gmail.com>
2587 * syx-bytecode.c (syx_bytecode_unary_messages, syx_bytecode_binary_messages): used to avoid memory allocation for well known symbol literals
2588 * syx-bytecode.c (syx_bytecode_gen_message): finds any occurrence of the given message into known symbols
2589 All calls have been updated
2590 * syx-interp.c (syx_interp_send_unary, syx_interp_send_binary): handles and send a common message
2592 * syx-object.c: removed is_static field not needed at the moment
2593 All parts have been updated
2594 * syx-init.c (_syx_create_class): changed from FALSE to TRUE the value to be put in has_refs (was a bad mistake)
2595 * syx-memory.c (syx_memory_gc): added some debugging informations
2596 * syx-memory.c (syx_memory_gc_begin, syx_memory_gc_end): added for creating GC transactions
2597 * syx-bytecode.c (syx_bytecode_gen_instruction): generate 16 bit-wide instructions
2598 All calls to it and the interpreter have been updated
2600 2007-06-04 Luca Bruno <lethalman88@gmail.com>
2602 * configure.ac: removed -pedantic since we use bitfields that are a GCC extension
2603 * 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
2605 * syx-interp.c (syx_interp_leave_context_and_answer): removed an argument because the return context has been inserted into method contexts
2606 * syx-interp.c (syx_interp_send_message): fixed message arguments array creation
2607 * syx-object.c (syx_byte_array_*): added
2608 * syx-object.c (syx_*_context_new): copy arguments to the context arguments stack
2609 * syx-object.h (SYX_METHOD_CONTEXT_RETURN_CONTEXT): moved from block contexts for speed matters
2610 * syx-object.h (SYX_BLOCK_ARGUMENTS_TOP): holds the index to the arguments stack
2611 * syx-object.h (SYX_PROCESSOR_SCHEDULER_*): old mistake SYX_PROCESS_SCHEDULER
2612 * syx-primitives.c (SmallInteger_*): bug fix
2613 * syx-parser.c (_syx_parser_parse_block): now operate on the same parser instead of creating a new one, to share arguments and temporaries
2614 * syx-parser.c (syx_parser_new): removed last two arguments, not needed anymore because of shared scopes
2615 * syx-parser.c (syx_parser_parse): store bytecodes as a ByteArray
2616 * syx-parser.c (_syx_parser_find_*): return -1 instead of 0 since syx_varsize now is not unsigned anymore
2617 * syx-parser.h (SyxParserScope, SyxParserScopeStack): added to share arguments and temporaries between methods and nested blocks
2618 * syx-memory.c (syx_memory_alloc): call syx_memory_gc once the heap is full
2619 * syx-types.h (SYX_IS_POINTER): fixed
2620 * syx-init.c (syx_build_basic): added syx_byte_array_class
2622 2007-06-03 Luca Bruno <lethalman88@gmail.com>
2624 * syx-memory.c (syx_memory_gc): added a basic implementation of a mark and sweep garbage collector
2625 * syx-memory.c (syx_memory_get_heap): added function
2626 * syx-memory.c (syx_memory_get_heap_size): added function
2627 * syx-utils.c (syx_path_join): removed
2629 * syx-object.c (SyxObject): added is_static, has_refs and is_marked bitfields to use for garbage collection with relative macro accesses
2630 * syx-types.h (syx_varsize): small integers can hold only signed ints
2631 * syx-memory.c (syx_memory_get_heap): added function
2632 * syx-memory.c (syx_memory_free): added function
2633 * syx-utils.c (syx_path_join): fixed possible memory leaks
2634 Calls to syx_object_new* have been fixed
2637 * syx-utils.c (syx_path_join): some stylistic fixes
2639 * Added Doxygen documentation
2641 * syx-types.h: defining TRUE and FALSE booleans when not defined (e.g. when not including glib.h)
2642 * syx-types.h (SYX_SMALL_INTEGER): use double shifting instead of AND/INVERT
2643 * syx-object.c (syx_class_lookup_method): added function and removed the issued macro
2644 * syx-utils.c: removed GError when not needed
2645 * syx-init.c: removed unused GHashTable
2646 * syx-interp.c (syx_exec_state_free): added inline function
2647 * syx-interp.c (syx_exec_state_save): fixed saving the execution state of a process
2648 * Removed all G_BEGIN_DECLS / G_END_DECLS to make use of Doxygen
2650 2007-06-01 Luca Bruno <lethalman88@gmail.com>
2652 * configure.ac: override standard CFLAGS
2653 * syx-object.c (syx_dictionary_at_symbol_put): return once we found the right place to put the data
2654 * syx-object.c (syx_metaclass_new, syx_class_new): avoid nil values to speed up lookups
2655 * syx-object.c (syx_symbol_new): put the symbol itself instead of SYX_TRUE
2656 * syx-enums.h (SyxTokenType): put string-based token types at the end so that syx_token_free can free strings
2657 * syx-lexer.h: Added SyxToken structure to get rid of GValue
2658 * syx-lexer.c: removed GValue dependency and Glib ascii functions usage
2659 Renamed all static functions
2660 All parts of Syx have been updated with the new behavior of the lexer, including the parser and the tests
2661 * syx-lexer.c (syx_lexer_free): added function
2662 * syx-lexer.c (syx_token_free): added function
2663 * syx-bytecode.c (syx_bytecode_free): added function
2664 * syx-parser.c (syx_parser_free): added function
2665 Renamed all static functions.
2666 * syx-utils.c: completely refactored without using Glib
2667 * syx-utils.h: removed G_VALUE_STRCMP
2668 * Replaced all g_strcasecmp and g_strdup with strcmp and strdup
2669 * syx-init.c (syx_init): removed g_type_init, we do not need GObject for GValue anymore
2670 * st/kernel/initialDecl.st: fixed instance variables according to syx-enums.h
2671 * syx-memory.c (syx_freev): new function to free NULL terminated arrays
2672 * syx-memory.c (_syx_memory): moved from static to dynamic
2673 * syx-memory.c (syx_memory_free): removed because of future garbage collector
2674 * syx-memory.h (SyxMemoryLink): removed with syx_memory_free
2675 * syx-types.h (syx_small_integer_new, syx_character_new): be sure we work on a long before doing bitwise operations
2676 * syx-types.h (syx_char): added type
2677 * syx-types.h (syx_size): changed from unsigned long to long according to standard size_t
2678 Removed lots of Glib memory related dependencies.
2679 Recovered a bunch of memory leaks