Axiomatic Bootstrapping: A Guide for Compiler Hackers

Report ID: TR-451-94
Author: Appel, Andrew W.
Date: 1994-03-00
Pages: 9
Download Formats: |Postscript|
Abstract:

The Standard ML of New Jersey compiler is written in Standard ML. Thus, SML/NJ can compile itself. This should be simple and obvious. There are some complications. The compiler produces binary files that contain both {it executable code} and {it static environments} (mapping identifiers to structures, signatures, and types). Normal binary files are intended to be loaded into a running SML/NJ system, where the static environment enhances the environment already available in that system, and the code is loaded and run. Some new version of the compiler may make different assumptions about the format of static environments, and its executing code may not be compatible with the existing interactive system. Thus, there can be a severe ``bootstrap'' problem: how can the old version of the compiler compile and bootstrap the new version? Here I attempt an axiomatic clarification of the bootstrapping technique. This should be useful to implementors of any self-applicable compiler with nontrivial object-file and runtime-system compatibility problems.

This technical report has been published as
Axiomatic Bootstrapping: A Guide for Compiler Hackers. Andrew W. Appel, ACM Trans. on Prog. Lang. and Systems 16(6) 1699-1718, November 1994.