Compiler bootstrapping depends on more than you might think

15 points by abhin4v


mikedorf

When you build Go 1.4 with your modern C compiler and OS, you will get a modern binary that calls your modern C standard library and kernel system calls in the appropriate way. But when you use your newly built Go 1.4 to build Go 1.19, the Go binary it produces is one that was effectively frozen around the time Go 1.4 was released; it makes the system calls and expects the ABIs and so on that were current then, not that are current now.

Maybe I'm misreading this but it sounds like Go inherits the host compiler's syscall bindings/implementation instead of using whatever is defined in the Go 1.19 source code?