diff --git a/doc/go1.17.html b/doc/go1.17.html index 48811e6b67..a8307bacac 100644 --- a/doc/go1.17.html +++ b/doc/go1.17.html @@ -134,35 +134,54 @@ Do not send CLs removing the interior tags from such phrases.
go 1.17
modules
+ If a module specifies go
1.17
or higher, the module
+ graph includes only the immediate dependencies of
+ other go
1.17
modules, not their full transitive
+ dependencies. (See Module graph pruning
+ for more detail.)
+
+ For the
+
+
+ Since the expanded
- Because the number of additional explicit requirements in the go.mod file may
- be substantial, in a Go 1.17 module the newly-added requirements
- on indirect dependencies are maintained in a
- separate
- To facilitate the upgrade to lazy loading, the
- go
command to correctly resolve transitive imports using
+ the pruned module graph, the go.mod
file for each module needs to
+ include more detail about the transitive dependencies relevant to that module.
If a module specifies go
1.17
or higher in its
- go.mod
file, its transitive requirements are now loaded lazily,
- avoiding the need to download or read go.mod
files for
- otherwise-irrelevant dependencies. To support lazy loading, in Go 1.17 modules
- the go
command maintains explicit requirements in
- the go.mod
file for every dependency that provides any package
- transitively imported by any package or test within the module.
- See the design
- document for more detail.
-
+ go.mod
file, its require
+ directive for every module that provides a transitively-imported package.
+ (In previous versions, the go.mod
file typically only included
+ explicit requirements for directly-imported packages.)
+go.mod
file needed for module graph pruning
+ includes all of the dependencies needed to load the imports of any package in
+ the main module, if the main module specifies
+ go
1.17
or higher the go
tool no longer
+ reads (or even downloads) go.mod
files for dependencies if they
+ are not needed in order to complete the requested command.
+ (See Lazy loading.)
require
block from the block containing direct
- dependencies.
+ Because the number of explicit requirements may be substantially larger in an
+ expanded Go 1.17 go.mod
file, the newly-added requirements
+ on indirect dependencies in a go
1.17
+ module are maintained in a separate require
block from the block
+ containing direct dependencies.
go
mod
tidy
subcommand now supports
- a -go
flag to set or change the go
version in
- the go.mod
file. To enable lazy loading for an existing module
- without changing the selected versions of its dependencies, run:
+ To facilitate the upgrade to Go 1.17 pruned module graphs, the
+ go
mod
tidy
+ subcommand now supports a -go
flag to set or change
+ the go
version in the go.mod
file. To convert
+ the go.mod
file for an existing module to Go 1.17 without
+ changing the selected versions of its dependencies, run:
@@ -199,10 +218,10 @@ Do not send CLs removing the interior tags from such phrases.
- The go
mod
graph
subcommand also
- supports the -go
flag, which causes it to report the graph as
- seen by the indicated Go version, showing dependencies that may otherwise be
- pruned out by lazy loading.
+ The go
mod
graph
+ subcommand also supports the -go
flag, which causes it to report
+ the graph as seen by the indicated Go version, showing dependencies that may
+ otherwise be pruned out.
If the main module specifies go
1.17
or higher,
- go
mod
vendor
now annotates
+ go
mod
vendor
+ now annotates
vendor/modules.txt
with the go
version indicated by
each vendored module in its own go.mod
file. The annotated
version is used when building the module's packages from vendored source code.