Information About

Bootstrapping (compilers)




Bootstrapping is a term used in Computer Science to describe the techniques involved in writing a Compiler (or Assembler ) in the target Programming Language which it is intended to compile.

One may then wonder how the Chicken And Egg problem of creating the compiler was solved: if one needs a compiler for language X to obtain a compiler for language X, how did the first compiler get written? Possible methods include:
  • implementing an Interpreter or Compiler for language X in language Y.

  • another interpreter or compiler for X has already been written in another language Y; this is how Scheme is often bootstrapped.

  • earlier versions of the compiler were written in a subset of X for which there existed some other compiler; this is how some supersets of Java are bootstrapped.

  • the compiler for X is Cross Compiled from another architecture where there exists a compiler for X; this is how compilers for C are usually ported to other platforms

  • writing the compiler in X, then hand-compiling it from source (most likely in a non-optimized way) and running that on the code to get an optimized compiler

  • Methods for distributing compilers in source code include providing a portable Bytecode version of the compiler, so as to ''bootstrap'' the process of compiling the compiler with itself.


The first language to provide such a bootstrap was NELIAC . The first commercial language to do so was PL/I . Today, a large proportion of programming languages are bootstrapped, including C, Scheme, OCaml , Factor and more.