Quick links

Axiomatic Bootstrapping: A Guide for Compiler Hackers

Report ID:
February 1994
Download Formats:


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

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