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)