in Go, making bootstrapping a little more involved than in the past.
The approach is to build the current release of Go with an earlier one.
-The process to install Go 1.x, for x ≥ 20, is:
+The process to install Go 1.x, for x ≥ 22, is:
-1. Build cmd/dist with Go 1.17.13.
-2. Using dist, build Go 1.x compiler toolchain with Go 1.17.13.
+1. Build cmd/dist with Go 1.20.6.
+2. Using dist, build Go 1.x compiler toolchain with Go 1.20.6.
3. Using dist, rebuild Go 1.x compiler toolchain with itself.
4. Using dist, build Go 1.x cmd/go (as go_bootstrap) with Go 1.x compiler toolchain.
5. Using go_bootstrap, build the remaining Go 1.x standard library and commands.
-NOTE: During the transition from the old C-based toolchain to the Go-based one,
-step 2 also builds the parts of the toolchain written in C, and step 3 does not
-recompile those.
+Because of backward compatibility, although the steps above say Go 1.20.6,
+in practice any release ≥ Go 1.20.6 but < Go 1.x will work as the bootstrap base.
+Releases ≥ Go 1.x are very likely to work as well.
-Because of backward compatibility, although the steps above say Go 1.17.13,
-in practice any release ≥ Go 1.17.13 but < Go 1.x will work as the bootstrap base.
+See golang.org/s/go15bootstrap for more details about the original bootstrap
+and https://go.dev/cl/54265 for details about later bootstrap version bumps.
-See golang.org/s/go15bootstrap for more details.
-
-Compared to Go 1.4 and earlier, dist will also take over much of what used to
-be done by make.bash/make.bat/make.rc and all of what used to be done by
-run.bash/run.bat/run.rc, because it is nicer to implement that logic in Go
-than in three different scripting languages simultaneously.
# timing information to this file. Useful for profiling where the
# time goes when these scripts run.
#
-# GOROOT_BOOTSTRAP: A working Go tree >= Go 1.17.13 for bootstrap.
+# GOROOT_BOOTSTRAP: A working Go tree >= Go 1.20.6 for bootstrap.
# If $GOROOT_BOOTSTRAP/bin/go is missing, $(go env GOROOT) is
-# tried for all "go" in $PATH. By default, one of $HOME/go1.17.13,
-# $HOME/sdk/go1.17.13, or $HOME/go1.4, whichever exists, in that order.
+# tried for all "go" in $PATH. By default, one of $HOME/go1.20.6,
+# $HOME/sdk/go1.20.6, or $HOME/go1.4, whichever exists, in that order.
# We still check $HOME/go1.4 to allow for build scripts that still hard-code
# that name even though they put newer Go toolchains there.
-bootgo=1.17.13
+bootgo=1.20.6
set -e