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:
- complete support for multiple namespaces
- pool dictionaries
- shared library support
(implemented on SYS5.4 based systems starting with ST/X vsn 10.4)
- dynamic loading/unloading of binary component libraries
(implemented on SYS5.4 based systems starting with ST/X vsn 10.4)
- dynamic compilation to machine code with Self style customization
- image interchange between different platforms
- different GC algorithms for special needs (plug-in GC modules, realtime support)
- multiple oldSpaces
- shared object spaces