Go 1.27 Release Notes

DRAFT RELEASE NOTES — Introduction to Go 1.27

Go 1.27 is not yet released. These are work-in-progress release notes. Go 1.27 is expected to be released in August 2026.

Tools

Response file (@file) parsing is now supported for the compile, link, asm, cgo, cover, and pack tools. The response file contains whitespace-separated arguments with support for single-quoted and double-quoted strings, escape sequences, and backslash-newline line continuation. The format is compatible with GCC’s response file implementation to ensure interoperability with existing build systems.

Go command

go test now invokes the stdversion vet check by default. This reports the use of standard library symbols that are too new for the Go version in force in the referring file, as determined by go directive in go.mod and build tags on the file.

The go command no longer has support for the bzr version control system. It will no longer be able to directly fetch modules hosted on bzr servers.

Runtime

Tracebacks for modules with go directives configuring Go 1.27 or later will now include runtime/pprof goroutine labels in the header line. This behavior can be disabled with GODEBUG=tracebacklabels=0 (added in Go 1.26). This opt-out is expected to be kept indefinitely in case goroutine labels acquire sensitive information that shouldn’t be made available in tracebacks.

Standard library

uuid

The new uuid package generates and parses UUIDs.

Minor changes to the library

bytes

The new CutLast function slices a []byte around the last occurrence of a separator. It can replace and simplify some common uses of LastIndex.

go/scanner

The scanner now allows retrieving the end position of a token via the new Scanner.End method.

go/token

File now has a String method.

go/types

The Hasher type is an implementation of maphash.Hasher for [Type]s that respects the Identical equivalence relation, allowing Types to be used in hash tables and similar data structures (see container/hash). HasherIgnoreTags is the analogous hasher for IdenticalIgnoreTags.

hash/maphash

The Hasher interface type defines the contract between values of a particular type and future hash-based data structures such as hash tables and Bloom filters; see #70471.

net

net: UnixConn read methods now return io.EOF directly instead of wrapping it in net.OpError when the underlying read returns EOF.

net/http

HTTP/2 server now accepts client priority signals, as defined in RFC 9218, allowing it to prioritize serving HTTP/2 streams with higher priority. If the old behavior is preferred, where streams are served in a round-robin manner regardless of priority, Server.DisableClientPriority can be set to true.

HTTP/1 Response.Body now automatically drains any unread content upon being closed, up to a conservative limit, to allow better connection reuse. For most programs, this change should be a no-op, or result in a performance improvement. In rare cases, programs that do not benefit from connection reuse might experience performance degradation if they had been improperly allowing an excessive amount of idle connections to linger; usually by setting Transport.MaxIdleConns to 0 or using different [Client]s for different requests, thereby bypassing Transport.MaxIdleConns limit. In these cases, setting Transport.DisableKeepAlives to true will disable connection reuse. However, such performance degradation usually indicates improper configuration or usage of Transport or Client in the first place, and a deeper look would likely be beneficial.

net/url

The new URL.Clone method creates a deep copy of a URL. The new Values.Clone method creates a deep copy of Values.

strings

The new CutLast function slices a string around the last occurrence of a separator. It can replace and simplify some common uses of LastIndex.

testing/synctest

The new Sleep helper function combines time.Sleep and testing/synctest.Wait.

unicode

The unicode package and associated support throughout the system has been upgraded from Unicode 15 to Unicode 17. See the Unicode 16.0.0 and Unicode 17.0.0 release notes for information about the changes.

uuid

Ports

Darwin

As announced in the Go 1.26 release notes, Go 1.27 requires macOS 13 Ventura or later; support for previous versions has been discontinued.