[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Help-smalltalk] GNU Smalltalk 3.0.3 and 3.0b released

From: Paolo Bonzini
Subject: [Help-smalltalk] GNU Smalltalk 3.0.3 and 3.0b released
Date: Wed, 14 May 2008 15:28:36 +0200
User-agent: Thunderbird (Macintosh/20080421)

GNU Smalltalk 3.0.3 and 3.0b will shortly be available from

GNU Smalltalk 3.0.3 is a maintenance release with the following changes:

* File>>#withReadStreamDo: and File>>#withWriteStreamDo: now return the result of evaluating their argument, instead of returning the File object.

* Fixed command-line option -S to actually work.

* Fixed GC bugs in SQLite bindings. Also, the bindings could sometimes call sqlite3_finalize twice.

* Fixed rare finalization bug.

* Fixes to the JIT compiler.

* Generational GC is now disabled on Alpha.

* More fixes for MinGW.

* New command-line option -i (--rebuild-image) for gst-load.

* New methods:


* The callback for the #returnFromSnapshot event is executed as a high-priority process. While relatively invasive, this change was needed to fix crashes when reloading images that used C bindings extensively.

* A system-installed libffi can be used. The included libffi has been upgraded to version 3.0.4.

* URLs can be passed to FileDescriptor class>>#open:mode:ifFail:.

GNU Smalltalk 3.0b is a development release. Like GNU Smalltalk 3.0a, it of GNU Smalltalk includes support for Seaside. It includes the following changes compared to GNU Smalltalk 3.0a:

* All the bugfixes of GNU Smalltalk 3.0.3.

* BlockClosure methods #cull:, #cull:cull:, #cull:cull:cull: evaluate blocks removing parameters that are not accepted by the block. Thanks to this new functionality, the parameter to #on:do: and #ifNotNil: can be omitted.

* CObjects can be backed with garbage-collected (as opposed to heap-allocated) storage. Using this is not always possible, for example for CObjects stored by external libraries or passed to functions that call back to Smalltalk or otherwise may cause garbage collections. If it is, however, it is easier to use, faster and more predictable than finalization. As an added benefit, garbage-collected CObjects accesses are bounds-checked.

Garbage-collected CObjects are created by sending #gcNew instead of #new.

* If possible, the installation is made relocatable. More information about this are available in the distribution and will be placed in the FAQ too.

* It is possible to create CFunctionDescriptors that are not attached to a function that the VM knows about, simply by passing a CObject to CFunctionDescriptor>>#for:returning:withArgs:.

* The VFS subsystem was rewritten. Virtual filesystems are now accessible via special methods on File (such as File>>#zip, for example "(File name: '') zip") and not anymore with special filenames that could conflict with real files.

This change causes some incompatibilities. In particular,

1. methods like `File image' and `Directory kernel' return a File object, not a String

2. Directory objects are not created anymore and instead File objects also support the Directory protocol;

3. Directory>>#do: passes File objects rather than file names to the block;

4. Directory>>#contents is now called Directory>>#entryNames.

* The order for searching pool dictionaries changed. The new implementation, codenamed "TwistedPools", was designed by Stephen Compall who also contributed a testsuite and parts of the implementation. The ideas behind TwistedPools can are explained on the wiki.

* Processes support thread-local variables, which are accessed through a special dictionary returned by ProcessorScheduler>>#processEnvironment.

* Bindings to Cairo and LibSDL were contributed by Michael Bridgen, Tony Garnock-Jones and Brad Watson.

Thanks to everyone who reported bugs and/or provided fixes that went
into these releases, including Stephen Compall, Thomas Girard, Tim Kack,
Cesar Rabak.


reply via email to

[Prev in Thread] Current Thread [Next in Thread]