GNU Smalltalk 3.2.4

GNU Smalltalk is a Smalltalk interpreter and libraries.

  Add it to your Download Basket!

 Add it to your Watch List!


Rate it!

What's new in GNU Smalltalk 3.2.4:

  • This is a minor release, mostly consisting of bug fixes.
Read full changelog
send us
an update
GPL (GNU General Public License) 
2.4/5 35
Paolo Bonzini
ROOT \ Programming \ Compilers
GNU Smalltalk is an implementation that closely follows the Smalltalk-80 language as described in the book Smalltalk-80: the Language and its Implementation by Adele Goldberg and David Robson, which will hereinafter be referred to as the Blue Book.

Smalltalk programming language is an object oriented programming language. This means, for one thing, that when programming you are thinking of not only the data that an object contains, but also of the operations available on that object.

The object's data representation capabilities and the operations available on the object are "inseparable"; the set of things that you can do with an object is defined precisely by the set of operations, which Smalltalk calls methods, that are available for that object: each object belongs to a class (a datatype and the set of functions that operate on it) or, better, it is an instance of that class.

You cannot even examine the contents of an object from the outside--to an outsider, the object is a black box that has some state and some operations available, but that's all you know: when you want to perform an operation on an object, you can only send it a message, and the object picks up the method that corresponds to that message.

In the Smalltalk language, everything is an object. This includes not only numbers and all data structures, but even classes, methods, pieces of code within a method (blocks or closures), stack frames (contexts), etc. Even if and while structures are implemented as methods sent to particular objects.

Unlike other Smalltalks (including Smalltalk-80), GNU Smalltalk emphasizes Smalltalk's rapid prototyping features rather than the graphical and easy-to-use nature of the programming environment (did you know that the first GUIs ever ran under Smalltalk?).

The availability of a large body of system classes, once you master them, makes it pretty easy to write complex programs which are usually a task for the so called scripting languages. Therefore, even though we have a nice GUI environment including a class browser, the goal of the GNU Smalltalk project is currently to produce a complete system to be used to write your scripts in a clear, aesthetically pleasing, and philosophically appealing programming language.


The first thing to do to compile GNU Smalltalk is to configure the program, creating the makefiles and a `gstconf.h', which contains guesses at the system's peculiarities. This configuration is performed automatically by the `configure' shell script; to run it, merely type:


Options that you can pass to configure include --disable-dld, which precludes Smalltalk programs from dynamically linking libraries at run-time.

After you've configured GNU Smalltalk, you can compile the system by typing:


Smalltalk should compile and link with no errors. If compiling goes wrong you might want to check the commands used to launch the compiler. For example, be sure to check if your compiler has extensions which, if not enabled, don't make it ANSI compatible. If this is the case, type

make distclean
CFLAGS=needed command-line flags

and retry the configure/make process. In very particular cases, the configure script might miss the presence of a header file or a function on your system. You can patch the `config.cache' file created by the configure process. For example, if configure did not find your `unistd.h' header file, change the line reading




and, again, retry the configure/make process.

The last lines of the make output should be like this:

export SMALLTALK_KERNEL=`cd ./kernel; pwd`;
./gst -iQ dummy_file
make[2]: Leaving directory `/home/utente/devel-gst'
make[1]: Leaving directory `/home/utente/devel-gst'

At this point, you have a working GNU Smalltalk. Congratulations!!!

You will also want to store the Smalltalk sources and create the image file in the proper place (the image file contains a full snapshot of the status of the system). This is done automatically when you do a make install. Specifying --enable-modules as an option to configure will load Smalltalk packages in the automatically installed image. For example

./configure --enable-modules=Blox,TCP

will create an image with the Blox user interface toolkit and the TCP abstraction library built-in.

Here are some key features of "GNU Smalltalk":

Memory accessing methods
Disk file-IO primitive messages
The GNU Smalltalk ObjectDumper
Special kinds of object
The context unwinding system

Note that, in general, GNU Smalltalk is much more powerful than the original Smalltalk-80, as it contains a lot of methods that are common in today's Smalltalk implementation and are present in the ANSI Standard for Smalltalk, but were absent in the Blue Book. Examples include Collection's allSatisfy: and anySatisfy: methods and many methods in SystemDictionary (the Smalltalk dictionary's class).

What's New in 3.0.4 Stable Release:

A few operations on collections have been sped up.
Code without a space between a binary minus and a number, such as "a-2", is parsed correctly. Sockets use the close-on-exec option.
Bugs were fixed regarding pipes, FIFO files, nested exception handlers, virtual filesystems, HTTP, bytecode optimization, Stream iteration, and the Windows port.

What's New in 3.0c Development Release:

Error backtraces include line numbers and filenames.
FileDescriptor is now a subclass of Stream, and the old superclass ByteStream has been removed.
Some functions exported by the VM to plugin modules are now thread-safe.
Stream operations try to eliminate useless copies and garbage collections when moving data from stream to stream.
Support for imports was added to namespaces.
The sockets package was renamed from TCP to Sockets as it now supports IPv6 and AF_UNIX sockets (in the Sockets package).
Bindings to OpenGL and GLUT were contributed.

Last updated on March 22nd, 2011

#Smalltalk interpreter #Smalltalk libraries #interpreter #Smalltalk #libraries

Add your review!