← All releases

go1.25.0

Major

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.

highlights
  • 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.