Next Release Notes Draft

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.

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

Minor changes to the library

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.

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.

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.

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.

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