Squeak Scheme

(This page is a mirrored copy of an article originally posted on the LShift blog; see the archive index here.)

A few days ago, I mentioned the idea of building a Scheme machine atop the existing Squeak VM and image. I’ve started some work in that direction: I’ve built (yet another) S-expression reader for Squeak, with associated data types and a unit test suite, and I’ve started building an interpreter that I intend to use to explore different ways of overlaying a Scheme-like environment on the existing Smalltalk environment. Once something settles down, a compiler to Smalltalk bytecode can be built.

Apropos the bytecode, I installed VMMaker in my image to look for a tail-call bytecode. Sadly, there doesn’t seem to be any such feature implemented at the moment, although it may not be much work to implement it. I’ll be interested to see how the Squeak community reacts to a tail-call implementation: with luck, it will be accepted into mainstream VMs.