2024-01-22 11:20:07 -07:00
|
|
|
## Tools {#tools}
|
|
|
|
|
|
|
|
### Go command {#go-command}
|
|
|
|
|
2023-11-05 02:35:12 -07:00
|
|
|
Setting the `GOROOT_FINAL` environment variable no longer has an effect
|
2024-05-22 09:40:09 -06:00
|
|
|
([#62047](/issue/62047)).
|
2023-11-05 02:35:12 -07:00
|
|
|
Distributions that install the `go` command to a location other than
|
|
|
|
`$GOROOT/bin/go` should install a symlink instead of relocating
|
|
|
|
or copying the `go` binary.
|
|
|
|
|
2024-05-22 15:44:04 -06:00
|
|
|
<!-- go.dev/issue/34208, CL 563137, CL 586095 -->
|
|
|
|
The new `go` `env` `-changed` flag causes the command to print only
|
2024-05-09 16:11:00 -06:00
|
|
|
those settings whose effective value differs from the default value
|
|
|
|
that would be obtained in an empty environment with no prior uses of the `-w` flag.
|
|
|
|
|
2024-05-22 15:44:04 -06:00
|
|
|
<!-- go.dev/issue/27005, CL 585401 -->
|
|
|
|
The new `go` `mod` `tidy` `-diff` flag causes the command not to modify
|
|
|
|
the files but instead print the necessary changes as a unified diff.
|
|
|
|
It exits with a non-zero code if updates are needed.
|
|
|
|
|
2024-05-23 08:11:35 -06:00
|
|
|
<!-- go.dev/issue/52792, CL 562775 -->
|
|
|
|
<!-- TODO: Improve this if needed. -->
|
|
|
|
The `go` `list` `-m` `-json` command now includes new `Sum` and `GoModSum` fields.
|
|
|
|
This is similar to the existing behavior of the `go` `mod` `download` `-json` command.
|
|
|
|
|
|
|
|
<!-- go.dev/issue/67111 ("cmd/go: add go telemetry subcommand") -->
|
2024-05-24 10:01:36 -06:00
|
|
|
The new `go` `telemetry` command can be used to view and configure the telemetry collection
|
|
|
|
mode. Without arguments, it displays the current mode. With `local`, `on`, or `off`, it sets
|
|
|
|
the collection mode. `go` `env` now lists two values: the `GOTELEMETRY` value, which
|
|
|
|
contains the telemetry collection mode, and the `GOTELEMETRYDIR` value setting which contains
|
|
|
|
the directory telemetry data and configuration are written to.
|
|
|
|
|
2024-05-23 08:11:35 -06:00
|
|
|
<!-- go.dev/issue/58894 ("all: add opt-in transparent telemetry to Go toolchain") -->
|
|
|
|
<!-- TODO: document Go 1.23 behavior (from https://go.dev/cl/559199, https://go.dev/cl/559519, https://go.dev/cl/559795, https://go.dev/cl/562715, https://go.dev/cl/562735, https://go.dev/cl/564555, https://go.dev/cl/570679, https://go.dev/cl/570736, https://go.dev/cl/582695, https://go.dev/cl/584276, https://go.dev/cl/585235, https://go.dev/cl/586138) -->
|
|
|
|
|
|
|
|
<!-- go.dev/issue/65573 ("cmd/go: separate default GODEBUGs from go language version") -->
|
|
|
|
<!-- TODO: document Go 1.23 behavior (from https://go.dev/cl/584218, https://go.dev/cl/584300, https://go.dev/cl/584475, https://go.dev/cl/584476) -->
|
|
|
|
|
2024-04-30 14:21:20 -06:00
|
|
|
### Vet {#vet}
|
|
|
|
|
2024-05-23 08:11:35 -06:00
|
|
|
<!-- go.dev/issue/46136 -->
|
2024-04-30 14:21:20 -06:00
|
|
|
The `go vet` subcommand now includes the
|
2024-05-22 09:40:09 -06:00
|
|
|
[stdversion](https://pkg.go.dev/golang.org/x/tools/go/analysis/passes/stdversion)
|
2024-04-30 14:21:20 -06:00
|
|
|
analyzer, which flags references to symbols that are too new for the version
|
|
|
|
of Go in effect in the referring file. (The effective version is determined
|
|
|
|
by the `go` directive in the file's enclosing `go.mod` file, and
|
|
|
|
by any [`//go:build` constraints](https://pkg.go.dev/cmd/go#hdr-Build_constraints)
|
|
|
|
in the file.)
|
|
|
|
|
|
|
|
For example, it will report a diagnostic for a reference to the
|
|
|
|
`reflect.TypeFor` function (introduced in go1.22) from a file in a
|
|
|
|
module whose go.mod file specifies `go 1.21`.
|
|
|
|
|
2024-01-22 11:20:07 -07:00
|
|
|
### Cgo {#cgo}
|
|
|
|
|
2024-05-23 08:11:35 -06:00
|
|
|
<!-- go.dev/issue/66456 -->
|
|
|
|
[cmd/cgo] supports the new `-ldflags` flag for passing flags to the C linker.
|
|
|
|
The `go` command uses it automatically, avoiding "argument list too long"
|
|
|
|
errors with a very large `CGO_LDFLAGS`.
|
2024-05-24 12:46:48 -06:00
|
|
|
|
|
|
|
### Trace {#trace}
|
|
|
|
|
|
|
|
<!-- go.dev/issue/65316 -->
|
|
|
|
The `trace` tool now better tolerates partially broken traces by attempting to
|
|
|
|
recover what trace data it can. This functionality is particularly helpful when
|
|
|
|
viewing a trace that was collected during a program crash, since the trace data
|
|
|
|
leading up to the crash will now [be recoverable](/issue/65319) under most
|
|
|
|
circumstances.
|