Running Scheme On Bare Metal (Experience Report)
Programming language implementations have features such as threads, memory management, type safety, and REPLs that duplicate some of the work done by the underlying operating system. The objective of hosting a language on bare metal is to unify the language implementation and operating system to have a lean system with no redundancy for running applications.
In this paper we report on our experience implementing this idea for the Scheme language, specifically an extension of the Gambit Scheme system on the commodity x86 platform. Our system, Mimosa, is written mostly in Scheme and supports the execution of Scheme applications with access to some essential devices (keyboard, terminal, bitmap screen, serial links, hard disks).
We report on the main problems we have encountered and how the use of some of the advanced features of the Gambit Scheme system simplified development. One of the main difficulties was the handling of hardware interrupts in a garbage collected language. We also discuss the benefits of using a REPL for experimentation and continuation passing style in the device drivers.
|Running Scheme On Bare Metal (scheme20-final3.pdf)||876KiB|