A development environment, based on the Scheme programming language, that runs on small embedded hardware is presented in this paper. The development process begins on a regular workstation, on which the programmer writes Scheme source code. The system then compiles the source code, and optimizes the resulting bytecode before transferring it to the target system, where it runs on a virtual machine.
The development system is impressive: the authors claim that judicious design choices allow them to squeeze a surprisingly complete execution environment on eight-bit and 16-bit systems into only 13 kilobytes. A reduced virtual machine requires only four kilobytes. A compiled Scheme program to run in this environment occupies additional memory. For example, the authors mention a context-free parser program of 653 lines of Scheme code, which translates to about six kilobytes of bytecode. The system excludes port-based input/output, and has simplified numerical capabilities. It does, however, offer first-class continuations, and, most impressively, an asynchronous, real-time garbage collector.
Each section of the paper introduces a subsystem, describes the design choices the authors considered, and then describes the implementation details of the authors’ final choice. Not surprisingly, the authors favor compactness over performance. Still, some shrewd decisions and clever implementations allow the authors to provide some useful capabilities, comparable to full-fledged Scheme systems. Although the authors offer more details about the garbage collector in another paper, they still introduce its principal concepts.
To prove the usefulness of the system as a viable development tool for real-time embedded systems, the authors describe a couple of the platforms on which they have implemented the system. They also offer statistics on memory usage and execution performance.