Bootstrap Path for Go 1.22
The first release candidate for Go 1.22 was released yesterday. The Go 1.22 release will require Go 1.20 or newer for bootstrapping. Presently, we bootstrap Go with gcc-go which (with the exception that x86 bootstrap broke recently) worked—I believe—quite well for us in the past and doesn't require cycling dependencies or reliance on pre-built binaries. With Go 1.22 this will stop to work as gcc-go only implements Go 1.18.
Therefore, the bootstrap setup needs to be revised. The following solutions could be implemented:
- We could go back to the old setup where go depends on itself via a virtual go-bootstrap package (we also do this for Rust).
- We could package intermediate versions and do a source-based gcc-go bootstrap setup: gcc-go 1.18 → go 1.20 → go 1.22.
- Starting with Go 1.21.0, the binaries provided by upstream are fully statically linked, hence we could use those for bootstrapping.
Thoughts? (CC: @kdaudt)
Edited by Sören Tempel