[Top][All Lists]

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

[Help-smalltalk] GNU Smalltalk 2.2a release announcement

From: Paolo Bonzini
Subject: [Help-smalltalk] GNU Smalltalk 2.2a release announcement
Date: Fri, 22 Sep 2006 17:30:53 +0200
User-agent: Thunderbird (Macintosh/20060909)

I got mistaken last week and this is 9 years I've been working on GNU Smalltalk, not 10. I guess I'll have to hand back the party hat for another 11 months.

Now, the serious part.

GNU Smalltalk 2.2a is a release candidate for 2.3. There were many additions to 2.2 that are relatively important and incompatible (image-wise) with 2.2, that justify the new release number. The release can be found at

I would like to thank the people on address@hidden for the renewed vitality of the list, which ultimately spurred me to find new interest in GNU Smalltalk, and to do all the work leading to this release.

The changes from 2.2 are as follows:

NEWS FROM 2.2 TO 2.2a

* FileStreams can now use pwrite for more efficient operation on files opened for read/write, and will do many less gratuitous lseek operations. pread will also be used by FileStream>>#copyFrom:to:. The number of system calls issued when generating the documentation, for example, is reduced by a third.

* Fixed bug in methods containing both -0.0 and 0.0 (positive and negative floating-point zero).

* Fixed bug in Directory class>>#create:, that could not create a directory relative to the current directory.

* Fixed bug in File>>#touch, which did not work really. There are also methods to modify a file's atime and mtime.

* Fixed bug in SortedCollection. After #removeAtIndex:, adds would leave the collection unordered.

* Introduced a method to efficiently convert a WriteStream into a ReadStream. It is called #readStream and makes WriteStream more polymorphic with ReadStream.

* Introduced another class shape, #character, that can be used for String.

* More reliable detection of at-end-of-file condition for pipes, TTYs, and so on (especially on Mac OS X).

* Moved gdk_draw_ functions to GdkDrawable.

* New goodie to parse the command line. Look at the documentation for the Getopt class and for SystemDictionary>>#arguments:do:.

* New example, lazy callections. When loaded, #select:, #reject: and #collect: do not create a new collection unless necessary. Idioms like

        (a select: [ :each | ... ]) do: [ : each | ... ]


        a := a select: [ :each | ... ].
        a := a reject: [ :each | ... ].
        a := a select: [ :each | ... ].
        ^a size

can be much faster when this example is loaded.

* Regular expressions are now included in the default image. The interface is now definitive and is similar to 2.2. The concrete classes for RegexResults are in a private namespace (since the user need not instantiate them anyway). Right now, regular expressions are only usable for String objects (see Unicode support below). This may change in the future.

* The backtraces now omit again the internal methods in the exception handling system.

* The class above which super-send bytecodes start searching is now embedded in the bytecode stream. This provides the infrastructure to implement 'here' in Smalltalk/X (not implemented) or 'self.Foo b' to execute the Foo>>#b method (also not implemented).

* Various speedups.

Unicode support:

* Characters above 127 are no longer used to represent extended ASCII characters. Instead, they are only used to represent a byte in the encoding of the Unicode characters from 128 on. To create them use the Blue Book method Character class>>#value:.

To represent Unicode characters above 127 use the (ANSI Smalltalk) Character class>>#codePoint: method, or the new syntax $<13> which allows to express characters using their Unicode code point. The new syntax will create instances of the new UnicodeCharacter class when the number is > 127.

Note that these characters *cannot* be shown on a stream with #nextPut: (use #display: instead) nor compared with #== (use #= instead). Character constants like $+ or $A are guaranteed to create normal "Character" objects, for which you can safely use #nextPut:.

* New UnicodeCharacter and UnicodeString classes. These new classes can also be passed to and received from C functions. See the manual for more information.

* Part of the I18N module was separated into the Iconv module, which provides support for printing Unicode characters and strings correctly.

Have fun, and report bugs.


reply via email to

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