Go 1.24, a planned update to Google‘s popular open-source programming language, has reached the release candidate stage. Expected to arrive in February 2025, the release brings full support for generic type aliases, along with the ability to track executable dependencies using tool
directives in Go modules.
Draft release notes for Go 1.24 note that the release brings full support for generic type aliases, in which a type alias may be parameterized like a defined type. Previously, A type alias could refer to a generic type, but the type alias could not have its own parameters. For now, generic type aliases can be disabled by setting GOEXPERIMENT=noaliastypeparams
. This parameter setting will be removed in Go 1.25.
With the go
command in Go 1.24, Go modules now can track executable dependencies using tool
directives in go.mod files. This removes the need for a previous workaround of adding tools as blank imports to a file conventionally named tools.go
. The go tool
command now can run these tools in addition to tools shipped with the Go distribution. Also with the go
command, a new GOAUTH
environment variable offers a flexible way to authenticate private module fetches.
Cgo, for creating Go packages that call C code, now supports new annotations for C functions to improve runtime performance. With these improvements, #cgo noescape cFunctionName
tells the compiler that memory passed to the C function cFunctionName
does not escape. Also, #cgo nocallback cFunctionName
tells the compiler that the C function cFunctionName
does not call back to any Go functions.
Other new features and improvements in Go 1.24:
- Multiple performance improvements to the runtime in Go 1.24 have decreased CPU overheads by 2% to 3% on average across a suite of representative benchmarks.
- A new
tests
analyzer reports common mistakes in declarations of tests, fuzzers, benchmarks, and examples in test packages, such as incorrect signatures, or examples that document non-existent identifiers. Some of these mistakes might cause tests not to run. - The
cmd/go
internal binary and test caching mechanism now can be implemented by child processes implementing a JSON protocol between thecmd/go
tool and the child process named by theGOCACHEPROG
environment variable. - An experimental
testing/synctest
package supports testing concurrent code. - The debug/elf package adds several new constants, types, and methods to add support for handling dynamic versions and version flags in ELF (Executable and Linkable Format) files.
- For Linux, Go 1.24 requires Linux kernel version 3.2 or later.
Go 1.24 follows Go 1.23, released in August, featuring reduced build times for profile-guided optimization.