SqueakJS
A Modern and Practical Smalltalk that Runs in Any Browser
Vanessa Freudenberg, Dan Ingalls, Tim Felgentreff, Tobias Pape, Robert Hirschfeld, 2014
Abstract
We report our experience in implementing SqueakJS, a bit-compatible implementation of Squeak / Smalltalk written in pure JavaScript. SqueakJS runs entirely in the Web browser with a virtual file system that can be directed to a server or client-side storage. Our implementation is notable for simplicity and performance gained through adaptation to the host object memory and deployment leverage gained through the Lively Web development environment. We present several novel techniques as well as performance measurements for the resulting virtual machine. Much of this experience is potentially relevant to preserving other dynamic language systems and making them available in a browser-based environment.
SqueakJS represents Squeak objects as plain JavaScript objects and integrates with the JavaScript garbage collection (GC). This allows existing JavaScript code to interact with Squeak objects. (page 2)
The performance of Amber is in the same order of magnitude as SqueakJS.