Pretty amusing/scary/insane the number of times you see a chain of languages (automake, perl, python, etc) where you need version X-1 to compile X. The dangers of dog fooding new features into the core tooling.
Which is how I think Rust works? So to bootstrap Rust requires building every version since the language was self hosted.
That’s to be expected with any bootstrapped language. What’s insane is how relatively recent a version some of the GNU tools depend on, with one version in there depending on itself!
I think it’d be a good policy for any bootstrapped tool or language’s build to depend on no later than the last released previous major version. Intermediate bootstrap levels (e.g. miniperl) are fine, as long as one can start from the previous major.
I think stating it this way gets the history backwards. The live bootstrap came about as a separate implementation of what had been done for Guix earlier. It then became a proving ground for new ideas, which then fed back into Guix.
It was quite educational to completely rebuild an i386 system during the a.out to ELF transition. Definitely a worthwhile exercise to learn all the autotools madness that underlies most of the Linux toolchain, but far easier than bootstrapping from nothing.
During both ia64 and amd64 bring up we were lucky enough to have emulators that allowed running new 64 bit binaries on existing 32 bit machines. qemu fills that niche today, making life easier for anyone that wants to build an entirely new architecture from scratch. Standing on the shoulders of giants...
Which is how I think Rust works? So to bootstrap Rust requires building every version since the language was self hosted.