modfile: add support for go and toolchain lines

As part of the forward compatibility work, a new toolchain line
is being added, and go lines are allowed to specify toolchain
versions like "1.21.0" or "1.21rc1" now. (The lax RE has allowed this for quite
some time; what's new here is allowing it in the main module.)

For golang/go#57001.

Change-Id: I1dc01289381fe080644a7a391b97a65158938f39
TryBot-Result: Gopher Robot <>
Reviewed-by: Bryan Mills <>
Run-TryBot: Russ Cox <>
3 files changed
tree: f50948f9be743bf20f026ec99f58f8f180102083
  1. gosumcheck/
  2. internal/
  3. modfile/
  4. module/
  5. semver/
  6. sumdb/
  7. zip/
  8. codereview.cfg
  9. go.mod
  10. go.sum



This repository holds packages for writing tools that work directly with Go module mechanics. That is, it is for direct manipulation of Go modules themselves.

It is NOT about supporting general development tools that need to do things like load packages in module mode. That use case, where modules are incidental rather than the focus, should remain in x/tools, specifically x/tools/go/packages.

The specific case of loading packages should still be done by invoking the go command, which remains the single point of truth for package loading algorithms.