Next Release Notes Draft

DRAFT RELEASE NOTES — Introduction to Go 1.28

Go 1.28 is not yet released. These are work-in-progress release notes. Go 1.28 is expected to be released in February 2027.

Tools

Vet

The new scannererr analyzer checks for failure to handle scanner errors after a loop around bufio.Scanner.Scan, which may cause scanning or I/O errors to go unreported.

The sqlrowserr analyzer performs a similar check for loops around sql.Rows.Next, so that iteration errors are correctly distinguished from a smaller result.

Standard library

Minor changes to the library

encoding/base32

Encoding.EncodedLen now panics if the encoded length overflows int, rather than returning a negative number.

encoding/base64

Encoding.EncodedLen now panics if the encoded length overflows int, rather than returning a negative number.

go/parser

The ResolveFile function performs legacy syntactic identifier resolution on an ast.File syntax tree. This resolution is deprecated; new applications should instead use go/types. This function is provided to ease the transition away from the old resolution in applications that mostly parse files in SkipObjectResolution mode but later encounter some cases where the old resolution is needed.

net/http

ProxyFromEnvironment now prioritizes lowercase proxy environment variables (http_proxy, https_proxy, and no_proxy) over the uppercase versions if both are set to different values. This change also affects default proxy lookups in DefaultTransport and DefaultClient by extension.

net/url

The new MustParse function returns the parsed URL or panics on error. It can simplify some common uses of Parse. For instance, initializing variables with valid URL string constants.

testing/synctest

The new Subtest convenience function combines [testing.(*T).Run] and testing/synctest.Test.