Wikipedia describes a bootstrap compiler to have these properties:
- An initial core version of the compiler
- A minimal subset of the language to be used by successive compiler versions
Everything I've read online assumes an initial subset version gets bootstrapped, but isn't it possible to bootstrap a recent compiler version (using the latest released binary)?
Wouldn't this benefit the compiler writer?: being able to dogfood the new features.
While I'm not aware of a language that uses latest version as bootstrap, I'm sure they could exist; I'm just wondering if there are good reasons not to. Thanks!
As a concrete example, the Go programming language docs explain that the default bootstrap compiler is version 1.4. Hence, the latest Go compiler code can't have new features added after 1.4 (ie: type alias), except maybe in tests only.
Update: additional explanation for my question, If a bug needs to be fixed in the core compiler 1.4 after-the-fact, and this bug could affect all later versions, then they need to be compiled again. Depending on how the bootstrap chain happens, might have differing implications. Is there a reason to use one way or the other?:
- Option A [1 level]: 1.5 compiles with 1.4, 1.6 compiles with 1.4
- Option B [n levels]: 1.5 compiles with 1.4, 1.6 compiles with 1.5 (that was compiled with 1.4)
(1.4 is the Core version)