A Squeak VM in JavaScript


SqueakJS executes Squeak in a web page without a plugin. It is a fully capable virtual machine implemented in pure JavaScript running unmodified Squeak images. Squeak is a modern implementation of Smalltalk, the original dynamic object-oriented programming environment. It runs bit-identically on virtually any platform, and now in the web browser, too.

You can try SqueakJS right now: Mini Squeak is a very stripped-down but fast version, or the full-blown Etoys and Scratch applications. Also interesting might be the Lively Squeak debugging interface I use to develop SqueakJS. You can also run the automated Benchmarks on your machine.

But even more interesting is running your own Squeak images: you can drop a Squeak image from your computer into the Launcher page, or construct a URL to have it run an image from your web server. Or build your own web app, perhaps using the JavaScript bridge.

Contributions are very welcome! Please report issues in the bug tracker. For discussion on how to use SqueakJS in your own project please use the Squeak mailing list. SqueakJS implementation details are better discussed on the vm-dev mailing list.

-- Bert Freudenberg


July 2016 SqueakJS 0.9 released: Spur images can be loaded and stored. Fabio Niephaus contributed networking support for http and https connections making e.g. Monticello work. Images can now be passed in a zip file, so we can link to archives directly (e.g. Squeak 5.0). This also required CORS proxy support (shout out to Connor Hudson at crossorigin.me).

January 2016 SqueakJS 0.8 released: fixes

December 2014 SqueakJS 0.7 released: Support weak references and finalization, add JavaScript bridge, and new launcher page

November 2014 SqueakJS 0.6 released: Generate plugins from Slang code. Support file templates, and passing arguments via URL.

October 2014 SqueakJS 0.5 released: Adds a simple, fast-compiling, non-optimizing JIT compiler. Makes it quite a bit faster, but at the expense of memory (mobile devices may be better off without it).

September 2014 SqueakJS 0.4 released: Supports event-based input, and many older primitives. Can run Scratch, and the oldest Squeak 1.1 image.

August 2014 SqueakJS 0.3 released: Adds closure support, and full-screen. Runs a current Squeak image (4.5).

July 2014 SqueakJS 0.2 released: Has file support and WarpBlt. Can run an Etoys image now, and includes the beginnings of a Balloon plugin to make TrueType fonts work.

April 2014: Here's what Dan and I have been working on: Resurrecting Smalltalk-78. The VM is based on SqueakJS. I will start porting many improvements back to here.

January 2014 Need to stop working on SqueakJS for a whileā€”but this VM tech will be put to good use, promise!

December 2013 Release 0.1: Runs mini.image successfully.

November 2013 Project started (after seeing Dan's Smalltalk-72 emulator at Hackers).