back

History of Smalltalk/X (ST/X, pronounced 'STIX')

This little text is meant as a kind of FAQ on ST/X; these questions have been asked so often, that I finally wrote the answers down ...

First implementation

The main trigger for creating a smalltalk was (of course) the famous Byte edition (Oct. 82 if I remember correctly), which focused especially on the Smalltalk language.

Some time later, I got hold of the (excellent) book "Smalltalk-80, the language and implementation", after that I started to implement an experimantal bytecode interpreter.

The bad performance of this interpreter lead soon to the conclusion, that only compilation to machine language will provide acceptable performance.

Due to previous (positive) experience with other cross-language compilers (basic-to-C :-)) and Lisp-to-C) this approach was also taken, eventually leading to the first Smalltalk-to-C (stc) compiler during 1986/1987.

the "X" in "Smalltalk/X"

At the same time, a first interface to the X Window system was created - providing a true mapping of smalltalk views to X's windows. Although not noticed in the outside world, this was a world premiere - the other available system at that time (on unix systems) was NOT using a direct view-to-window relation, but simulated its own windowing system in one big X window.
Thats where the "X" in Smalltalk/X originated.

Of course, in the meantime, this is also done by other Smalltalk systems, making the "X" a historical leftover (which is kept until I may find a better name :-).

Notice, that there is another package called "STIX" around: the "GNU-Smalltalk's X extension". These two have nothing in common and "Smalltalk/X should not be confused with "STIX".

Licensing & Compatibility

ParcPlace allows licensing the basic classes (names & inheritance) and thus allows a (re-) implementation to provide a comparable class hierarchy and instance protocol. Smalltalk/X's basic classes are written to be protocol compatible to the corresponding Smalltalk-80 classes. The development of these is done without referring to the original implementation (so called "clean room development").

Since this license does not cover the View and GUI elements, those classes are not (and may never be) compatible to ParcPlace implementations.

This may change if ongoing standardization efforts lead to an "Ansi Smalltalk" covering these classes. However, since even basic features (such as Blocks being closures) seem to make trouble in standardization, I personally doubt that there will be a standard covering these classes in the near future.

Compilation

The original (1987) system did NOT include a bytecode compiler or interpreter; it was purely batch oriented (much like traditional language systems). An early plan was to offer the STC-compiler as a turbo charger for existing Smalltalk systems.

However, for development & prototyping, it became soon obvious that an incremental compiler was needed to be available IN the system and a bytecode compiler and interpreted were added during 1988.

Thus, in ST/X things where developped vice versa - first came the stand-alone compiler, then the bytecodes and incremental compilation.

Development

Till 1994, development of Smalltalk/X was done in spare time as a single persons "hobby" project. After that, many testers and more people joined the team, providing suggestions, hints, bug reports and adding new features.

If you like to participate in the development and/or donate code, new classes, examples or applications, feel free to contact the author.

Future

The following features are being prepared or planned: