Abstract A computer language and its compiler determine the style and efficiency of the interaction between programmers and computers. Often, the nature of that interaction can be improved directly by improving the language or compiler technology. Operating systems, in particular, are amenable to such improvement. By producing code at runtime, a compiler can specialize code based on runtime information. The resulting specialized code can be an order of magnitude faster than the corresponding unspecialized code.
Extensible system based on type-safe languages are currently an active area of systems research.
Examples include the Spin extensible operating system, and the Java system. We have found that traditional type-safe languages can be unsuitable for building such systems in two ways. First, certain language features for allowing code reuse can interfere with the goal of protection. Second, these languages are not powerful enough to support efficient, low-level programming. I show how we solved these problems in Spin, and how our work applies to other languages for building extensible systems.