Squeak
http://squeak.org
http://wiki.squeak.org/squeak/
Squeak is an open, highly-portable Smalltalk-80 implementation whose virtual machine is written entirely in Smalltalk, making it easy to debug, analyze, and change. To achieve practical performance, a translator produces an equivalent C program whose performance is comparable to commercial Smalltalks.
Other noteworthy aspects of Squeak include
- real-time sound and music synthesis written entirely in Smalltalk
- extensions of BitBlt to handle color of any depth and anti-aliased image rotation and scaling
- network access support that allows simple construction of servers and other useful facilities
- it runs bit-identical on many platforms (Windows, Mac, Unix, and others)
- a compact object format that typically requires only a single word of overhead per object
- a simple yet efficient incremental garbage collector for 32-bit direct pointers
- efficient bulk-mutation of objects
Squeak is available for free via the Internet, at this and other sites. Each release includes platform-independent support for color, sound, and network access, with complete source code. Originally developed on the Macintosh, members of its user community have since ported it to numerous other platforms including Windows 95 and NT, Windows CE (it runs on the Cassiopeia and the HP320LX), all common flavors of UNIX, Acorn RiscOS, and a bare chip (the Mitsubishi M32R/D).
To quote from Dwight Hughes, a frequent contributor to the Squeak mailing list, "How is Squeak important? Squeak extends the fundamental Smalltalk philosophy of complete openness – where everything is available to see, understand, modify, and extend for whatever purpose – to include even the VM. It is a genuine, complete, compact, efficient Smalltalk-80 environment (not a toy). It is not specialized for any particular hardware/OS platform. Porting is easy – you are not fighting entrenched platform/OS dependencies to move to a new system or configuration. It has essentially been put into the public domain - greatly broadening potential interest, and potential applications. The core team behind Squeak includes Dan Ingalls, Alan Kay, Ted Kaehler, John Maloney, and Scott Wallace. All of this has attracted many of the best and most experienced Smalltalk programmers and implementers in the world."
Squeak began, very simply, with the needs of a research group at Apple. We wanted a system as expressive and immediate as Smalltalk to pursue various application goals (prototypical educational software, user interface experiments and (let's be honest) another run at the Dynabook fence). As you can read in the OOPSLA paper ("Back to the Future") we hit on the idea of writing a Smalltalk interpreter in a subset of Smalltalk, together with a translator from that subset to C.
Smalltalk-80 was developed at Xerox PARC in the 1970s. Apple obtained a license in 1980. A team at Apple developed Squeak in 1996, and have made it available free under license. The license agreement is intended to keep Squeak open and available to the user community, while allowing users to do useful things with Squeak. Here is a paraphrase of the license terms:
You are allowed to change Squeak, write extensions to Squeak, build an application in Squeak, and include some or all of Squeak with your products. You may distribute all of these things along with Squeak, or portions of Squeak, for free or for money. However, you must distribute these things under a license that protects Apple in the way described in this license.
If you modify any of the methods of class objects (or their relationships) that come with Squeak (as opposed to building on top of the classes in the release), you must post the modifications on a web site or otherwise make them available for free to others, just as has been done with Squeak. The same is true if you port Squeak to another machine or operating system - you must post your port on a web site or otherwise make it available for free to others under the same license terms.