Squeak
From Croquet Consortium
Squeak is a tightly integrated open source software development environment for live software construction using the object-oriented programming language Smalltalk. Squeak began with the needs of a research group at Apple that included Alan Kay. Alan wanted a system as expressive and immediate as Smalltalk to pursue various application goals: prototypical educational software, user interface experiments, and another run at the Dynabook. The current Squeak interpreter combines a classic Smalltalk-80 interpreter with a simple yet efficient 32-bit direct-pointer object memory, and incremental garbage collector. It also includes a BitBlt graphics system that supports 1-, 2-, 4-, and 8-bit indexed colors, as well as 16- and 32-bit rgb colors, plus a "warp drive" that supports fast rotations and other affine transformations, as well as simple anti-aliasing. Other notable, and equally portable, abilities of Squeak include 16-bit sound input and output, and support for sockets and internet access.
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. That design, and adhering, for better or worse, to the image model (the entire state of Squeak is manifest in an image file), yields a system of extreme portability and sharability. Any image file will run on any Squeak VM, even if it was saved on very different hardware, with a very different OS, or no OS! 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.
Croquet required a number of capabilities that could only be provided by a true late bound, message sending language. Croquet's relationship to Squeak gives Croquet the property of a purely object-oriented system. This allows for significant flexibility in the design and the nature of the protocols and architectures that have been developed for Croquet. An essential part of our development process is Squeak's ability to keep the system running while testing and especially while making changes. Squeak allows even major changes to be performed incrementally and they take no more than a fraction of a second to effect. Another key feature of Squeak is its generalized storage allocator and garbage collector that is not only efficient in real-time (so that animations and dynamic media of many kinds can be played while the garbage collector is collecting), but that allows reshaping of objects to be done safely. It may be interesting to note that when we first set out to build Croquet, we intended to do it in Java. However, we had to abandon that approach because Java lacks needed meta facilities.
The Squeak virtual machine is software that acts as an interface between Squeak code and the microprocessor. The Squeak virtual machine is written in Slang, a functional subset of Smalltalk that can be translated into standard C. Squeak essentially uses the C language as a cross-platform equivalent of assembly language. Since Slang is a subset of Smalltalk, the Squeak virtual machine can be edited and debugged by running it in Squeak itself. The virtual machine can also be extended with plug-ins, written in either C or Slang. These are used in Squeak for such things as playing MPEGs and for Squeak's built in public key encryption abilities.
The Core Model of Croquet depends on being sure that all semantically meaningful computations of a simulation (e.g., not rendering) produce the same bit-identical results on each participating machine. It also depends on being able to produce a portable serialized image of those portions of memory that are unique to a given simulation. Squeak provides both of these features.
