[bootstrappable] Descent principle for bootstrapping

  • From: rain1@xxxxxxxxxxxxxxx
  • To: bootstrappable@xxxxxxxxxxxxx
  • Date: Mon, 26 Jun 2017 12:59:51 +0000

Hello,

I thought I'd share this view since it could be a useful way to think about the bootstrapping problem.

For a set of packages, you can consider the build inputs required to compile each package. If we want to build everything in terms of one a small set of core packages, then problem comes from "self-hosted" packages whos output is required as an input.

If you only have one self-hosted package then it follows that everything else is built by some chain that starts from that single core package. What this means is that we just need to identify self-hosted packages and provide an alternative way to build them in terms of "smaller" packages. We don't need to carefully design a bootstrap path like assembly -> forth -> lisp interpreter -> lisp compiler -> c compiler -> ... It will just fall in to place.

Along this line of reasoning I have started to collect data on language implementations and which inputs they require:
https://bootstrapping.miraheze.org/wiki/Descent_principle
https://bootstrapping.miraheze.org/wiki/Build_Inputs

It would be useful to compile a list of the language implementations which can be built without self hosting (a couple so far: amber, guile, mes, the stage0 hex-assemblers). It's also important to consider the tools used in the build process like ./configure.


Other related posts: