We're pleased to announce that Sun has agreed to make the Klein Metacircular Virtual Machine Kit available to the public under an Open Source (BSD) license. Klein is a former Sun Labs research project intended to learn more about the construction of "metacircular" virtual machines (that is, VMs written in the same language that they implement). The artifact that we've produced is very much a work in progress, but it is intended to someday be a virtual machine for the Self language, written almost entirely in Self, and a development environment for that VM. You can download it from:
The project is far from complete - there is a *lot* of work left to be done before Klein will be a usable VM. (It's very very slow, there's no garbage collector yet, it's not capable of running its own UI yet... see the release notes for more details.) This release isn't intended to be used as a practical VM; we're just hoping that it might be of interest to people who are interested in VM development. We're open-sourcing it now because there hasn't been much work done on Klein since late 2005, and it was looking like Sun had no further interest in funding it. (None of us is actually working for Sun anymore.) Still, a lot of functionality has been implemented so far, including a compiler (capable of producing slow-but-correct machine code for most Self code), an export system (capable of producing and incrementally-updating a Klein image containing a given list of Self modules), a reflection system (capable of reflecting on Klein objects, either from inside the Klein image itself or from a remote Self image), and a debugger (capable of source- and machine-level viewing of Klein objects and processes, including a partial implementation of fix-and-continue).
See the release notes for more details about what Klein is, how to run it, what works and what doesn't. You can also see our OOPSLA 2005 paper, "Constructing a Metacircular Virtual Machine in an Exploratory Programming Environment," for a more thorough description of the principles behind Klein.
We have no idea how much work will be done on Klein in the future. All three of us are currently looking for work. Maybe some of us will find some spare time to spend on Klein. If we're really lucky, maybe we'll be able to find a way to get paid for continuing the project - though we're not betting on it. If anyone out there is interested in working on Klein, we'd love to hear from you.
Alex Ausch Adam Spitz David Ungar
Yay! (but not about the last part...) I will be away from my computer until Monday so won't even be able to properly read Adam's announcement till then, much less look at the software. But I just wanted thank you for your great work.