← Back to context

Comment by jakelazaroff

2 years ago

I think this blog post addresses the bootstrapping issue: https://ziglang.org/news/goodbye-cpp/

Suppose you are implementing a new feature, how do you test it? First you compile the bootstrapping compiler. Then you use the bootstrapping compiler to compile an unoptimized optimizing compiler. Then you use the optimizing compiler to compile an optimized optimizing compiler. If the compiler doesn't rely on llvm then there will be more code to compile which will make this procedure slower. Especially since the bootstrapping compiler probably isn't very fast (though idk if this is the case with Zig).

  • No. Bootstrap is involved only if you are making a breaking change. For normal development, this doesn't change anything.

    • Any change to the compiler can break or cause unintended side-effects to bootstrap. For example, adding an import to a module in the compiler might break bootstrap if the imported module uses syntactic constructs the bootstrap compiler doesn't support. The problems are often very subtle.