Constructing a Metacircular Virtual Machine in an Exploratory Programming Environment
Town and Country Room
Tuesday, 13:30, 45 minutes
David Ungar, Sun Microsystems Laboratories
Adam Spitz, Sun Microsystems Laboratories
Alex Ausch, Sun Microsystems Laboratories
Can virtual machine developers benefit from religiously observing the principles more often embraced for exploratory programming? To find out, we are concurrently constructing two artifacts?a Self VM entirely in Self (the Klein VM), and a specialized development environment?with strict adherence to pure object-orientation, metacircularity, heavy code reuse, reactivity, and mirror-based reflection. Although neither artifact is yet complete, the environment supports many remote debugging and incremental update operations, and the exported virtual machine has successfully run the whole compiler.
As a result of our adherence to these principles, there have been both positive and negative consequences. We have been able to find and exploit many opportunities for parsimony. For example, the very same code creates objects in the bootstrap image, builds objects in the running VM, and implements a remote debugger. On the other hand, we have been forced to expend effort to optimize the performance of the environment. Overall, this approach trades off the performance of the environment against the architectural simplicity and ease of development of the resulting VM artifact. As computers continue to improve in performance, we believe that this approach will increase in value.