August 12, 2025
Go 1.25 has no language changes but adds container-aware GOMAXPROCS, an experimental low-overhead garbage collector, DWARF5 debug info by default, and a compiler bugfix that makes some previously-passing but spec-violating nil-check code now panic. It also graduates testing/synctest to stable and adds an experimental encoding/json/v2.
GOMAXPROCS now defaults to respecting Linux cgroup CPU bandwidth limits and updates automatically at runtime if CPU count or limits change (disable via GODEBUG containermaxprocs=0/updatemaxprocs=0 or manual GOMAXPROCS).
New experimental 'Green Tea' garbage collector (GOEXPERIMENT=greenteagc) improves locality/scalability, with an estimated 10-40% reduction in GC overhead in some programs.
New runtime/trace.FlightRecorder API captures execution traces into an in-memory ring buffer, letting programs snapshot only the trace data around interesting events instead of tracing continuously.
Compiler bugfix (present since Go 1.21) that incorrectly delayed nil pointer checks is fixed; programs that relied on the old buggy ordering will now correctly panic.
Compiler and linker now emit DWARF version 5 debug info by default, shrinking binaries and speeding up linking (fallback via GOEXPERIMENT=nodwarf5).
testing/synctest, previously experimental in Go 1.24, is now generally available, providing virtualized time and goroutine-blocking detection for testing concurrent code.
New experimental encoding/json/v2 and encoding/json/jsontext packages (GOEXPERIMENT=jsonv2) offer a major revision of JSON encoding with substantially faster decoding and new marshal/unmarshal options.
go vet adds two analyzers: waitgroup (misplaced sync.WaitGroup.Add calls) and hostport (flags fmt.Sprintf host:port construction that breaks with IPv6, suggesting net.JoinHostPort).
go.mod supports a new 'ignore' directive to exclude directories from package-pattern matching (e.g. all, ./...) while still including them in module zips.
sync.WaitGroup gains a Go method to simplify launching and counting goroutines.
go build -asan now performs C memory leak detection at program exit by default.
Security/crypto changes: RSA key generation and FIPS-mode ECDSA/Ed25519 signing are several times faster, and TLS 1.2 now disallows SHA-1 signature algorithms by default per RFC 9155.