qmuntal 6561d9e488 cmd/go: avoid build actions for pure-Go go list -compiled
For go list -compiled, cmd/go currently constructs build actions for
every listed package in order to populate CompiledGoFiles. For pure-Go
packages, that information is already available after package loading:
the compiler inputs are just GoFiles. The builder is only needed for
packages that generate additional Go sources, such as cgo or SWIG
packages, or when list also needs stale, export, or coverage
information.

Avoid constructing build actions for pure-Go packages in the common
-compiled case, and fill CompiledGoFiles directly from GoFiles instead.

On a small repro using:

    go list -e -compiled=true -test=true -export=false -deps=true -find=false -pgo=off ./...

the elapsed time dropped from about 630-690 ms to about 440-490 ms.

Add a GOTMPDIR regression test showing that pure-Go go list -compiled
does not require creating a build work directory.

For #75238.

Change-Id: I5f06536a2047f54f9df530ebbc39db9257f2a49f
Reviewed-on: https://go-review.googlesource.com/c/go/+/787320
Reviewed-by: Michael Matloob <matloob@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
LUCI-TryBot-Result: golang-scoped@luci-project-accounts.iam.gserviceaccount.com <golang-scoped@luci-project-accounts.iam.gserviceaccount.com>
Reviewed-by: Alex Brainman <alex.brainman@gmail.com>
Reviewed-by: Ian Alexander <jitsu@google.com>
Reviewed-by: Michael Matloob <matloob@golang.org>
2026-07-15 10:23:15 -07:00
2026-07-09 11:24:04 -07:00

The Go Programming Language

Go is an open source programming language that makes it easy to build simple, reliable, and efficient software.

Gopher image Gopher image by Renee French, licensed under Creative Commons 4.0 Attribution license.

Our canonical Git repository is located at https://go.googlesource.com/go. There is a mirror of the repository at https://github.com/golang/go.

Unless otherwise noted, the Go source files are distributed under the BSD-style license found in the LICENSE file.

Download and Install

Binary Distributions

Official binary distributions are available at https://go.dev/dl/.

After downloading a binary release, visit https://go.dev/doc/install for installation instructions.

Install From Source

If a binary distribution is not available for your combination of operating system and architecture, visit https://go.dev/doc/install/source for source installation instructions.

Contributing

Go is the work of thousands of contributors. We appreciate your help!

To contribute, please read the contribution guidelines at https://go.dev/doc/contribute.

Note that the Go project uses the issue tracker for bug reports and proposals only. See https://go.dev/wiki/Questions for a list of places to ask questions about the Go language.

Description
Languages
Go 95.1%
Assembly 4.5%
C 0.2%