Back to the Future The Story of Squeak, A Practical Smalltalk Written in Itself
📜 Abstract
Squeak is an open, highly-portable Smalltalk 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: 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; extensions of BitBlt to handle color of any depth and anti-aliased image rotation and scaling; and real-time sound and music synthesis written entirely in Smalltalk.
✨ Summary
Summary
The paper describes the design, implementation, and rapid development of Squeak, an open and portable Smalltalk-80 system whose virtual machine is written in Smalltalk itself. To obtain practical execution speed, a restricted Smalltalk subset is translated into C. This approach enabled the authors to debug and instrument the virtual machine within a Smalltalk environment while producing a compiled implementation suitable for real use.
The principal technical contributions include a compact variable-length object-header format for 32-bit direct pointers; an incremental generational garbage collector with compaction and short pauses; extensions to BitBlt for multiple color depths, image scaling, rotation, and anti-aliasing; and real-time sound synthesis implemented in Smalltalk and optionally translated into C. The paper also reports a development process in which the system became self-supporting within a few months, followed by incremental optimization and ports to multiple platforms.
The paper’s documented influence is visible in subsequent Squeak-related research and systems. Later work used Squeak as the platform for Morphic and Etoys visual-programming environments, extending the paper’s goal of making a complete, inspectable computing environment accessible to non-specialists. (citeseerx.ist.psu.edu) Squeak also became the technical predecessor of Pharo, which was forked from Squeak in 2008 as a Smalltalk environment aimed at research and professional software development. (rmod-files.lille.inria.fr) A later historical study by Dan Ingalls treats Squeak and Etoys as successive stages in the evolution of Smalltalk, documenting their continuing role in research on programming environments and personal computing. (researchgate.net) The bibliographic record identifies the paper as an OOPSLA ’97 publication in ACM SIGPLAN Notices, volume 32, issue 10, pages 318–326. (squeak.org)