The SELF Page

What's New?

Latest Smalltalk 4 Visualworks version: 0.3 [download]

What is Self?

SELF is an experimental prototype-based pure object oriented programming language developed between 1987 and 1995 at Stanford University and Sun Labs by Dave Ungar, Randy Smith and others. See www.sun.com/research/self/ for more information.

The syntax is similar to Smalltalk. And like a Smalltalk system is more than a simple language, SELF is also a graphical multiuser-capable development evironment. In constrast to most object oriented languages, SELF has no classes, just objects.

Unfortunately, the SELF system is only available for Sun SPARC and - recently - Apple Power Mac computers. When the system was created, the main design goal was maximum performance, not portability. For this reason, SELF turned out as quite a challenge to move it to other platforms and so far nobody created a Linux or Windows version.

BTW, SELFs compiler technology is what Java people nowadays know as the "HotSpot performance engine". It was invented for SELF nearly 10 years ago.


My Efforts

In the last few years, I started several attempts to create a similar system - or at least a language interpreter - which would allow me to play with SELF on Windows. I never finished any version, but I'll publish what I created here, hoping that somebody out there is interested in helping to get something done. I know there're others out there who also started similar projects. Hopefully, we can combine efforts.

Instead of porting the original system or creating a new system from scratch in a low level language like C, I tried to use Smalltalk or Java to construct a simple SELF interpreter.

Smalltalk is IMHO a good starting point because SELF and Smalltalk are quite similar. Using a Smalltalk VM omits the need to create a new memory management and garbage collection system. It will be much slower than a custom made system though, as Smalltalk has to emulate the delegation mechanism SELF uses to implement object inheritance.

Using Java is interesting as I think SELF would make a nice scripting language which one could use to script all that existing Java libraries without the need to write Java source code.


The Projects

However, instead of publishing my own code right now, I'd like to start with some code Gordon Cichon wrote 1996 and now published under the GPL. In the last few days, I heavily hacked his code (actually I rewrote most of it :-) to port it to VisualWorks Smalltalk and make it work. I fixed a dozen bugs or so. It actually runs now[2001-02-03] and is able to sucessfully read in the first bootstrap file of the original SELF system - the file "core/init.self". Update[2001-02-04]: It also reads "core/systemStructure.self" and "core/coreObjects.self" up to line 155 now. Update [2001-02-11]: It now reads most of that file upto the "core/fakeSlot.self" file where some error occurs.

You can get Gordon's original code here. My current version 0.3 is available here. It is a zip file with VW5i.3 parcels but it should work with older 5i versions, too. You will need VisualWorks to load the code. If you don't own it, you can download a free non-commercial version here. VisualWorks runs on Windows, Linux x86, PowerMac, Sun Solaris and one or two other Unix flavors. It's truely cross-platform, make your choice.

The current system can't really do anything useful right now. However, you can read the source or play around with the language parser and interpreter. The zip file also contains a saved Workspace with a few expressions which show how to use the system. If you evaluate "SelfWindow open", you get a crude UI to explore the simulated SELF world.

Please feel free to send me (sma ät domain) your feedback.

Or you might want to check out the SELF mailing list.


© Copyright 2001 by Stefan Matthias Aust. All rights reserved.