permacomputing

Source repository for the main permacomputing wiki site
git clone http://git.permacomputing.net/repos/permacomputing.git # read-only access
Log | Files | Refs

bootstrapping.mdwn (1761B)


      1 # Bootstrapping
      2 
      3 **Bootstrapping** has many meanings in the computer world. The most common
      4 meaning is now more commonly referred to as **booting** (i.e. the process of
      5 starting a computer). Bootstrapping a software or a programming language,
      6 however, generally means making it available on a computing platform
      7 starting from a very elementary level.
      8 
      9 Bootstrappability is important for permacomputing for ensuring that
     10 arbitrary software can be run in an indefinite future where computing
     11 environments can be very different.
     12 
     13 Bootstrappability is often a problem with programming languages that have
     14 been implemented in themselves (like, a C compiler written in C, or a
     15 Rust compiler written in Rust). Usually, a language is made available on a
     16 new processor architecture by cross-compiling its compiler to it, but if
     17 that option is not available, bootstrapping is needed.
     18 
     19 In case of ordinary software, bootstrapping means not only compiling the program itself but also compiling/bootstrapping all of its software [[dependencies|dependency]] from the lowest level, including the [[operating system|operating systems]]. The amount of computing resources (especially storage space and computing time) required for bootstrapping can be used to measure **bootstrap complexity**.
     20 
     21 Binary executables compiled for simple [[virtual machine]]s can be used to
     22 help bootstrapping. A good idea might be to have a simple, easily
     23 retargettable [[C]] compiler available as this kind of executable.
     24 
     25 Classical, bare-hardware [[Forth]] environments have often been created in a
     26 bootstrapping-like way, where a simple memory editor gradually gains more
     27 vocabulary.
     28 
     29 See also:
     30 
     31   * [Where did that prebuilt binary come from?](https://bootstrapping.miraheze.org/wiki/Main_Page)