Bootstrapping

Bootstrapping has many meanings in the computer world. The most common meaning is now more commonly referred to as booting (i.e. the process of starting a computer). Bootstrapping a software or a programming language, however, generally means making it available on a computing platform starting from a very elementary level.

Bootstrappability is important for permacomputing for ensuring that arbitrary software can be run in an indefinite future where computing environments can be very different.

Bootstrappability is often a problem with programming languages that have been implemented in themselves (like, a C compiler written in C, or a Rust compiler written in Rust). Usually, a language is made available on a new processor architecture by cross-compiling its compiler to it, but if that option is not available, bootstrapping is needed.

In case of ordinary software, bootstrapping means not only compiling the program itself but also compiling/bootstrapping all of its software dependencies from the lowest level, including the operating system. The amount of computing resources (especially storage space and computing time) required for bootstrapping can be used to measure bootstrap complexity.

Binary executables compiled for simple virtual machines can be used to help bootstrapping. A good idea might be to have a simple, easily retargettable C compiler available as this kind of executable.

Classical, bare-hardware Forth environments have often been created in a bootstrapping-like way, where a simple memory editor gradually gains more vocabulary.

See also: