← All releases

go1.27.0

Major

August 19, 2026

Go 1.27 adds generic methods and other small language refinements, ships new encoding/json/v2, post-quantum crypto/mldsa, and experimental SIMD packages, speeds up small allocations, and makes goroutine leak profiling generally available—an incremental, compatibility-preserving upgrade.

highlights
  • Language: methods can now declare their own type parameters (generic methods), e.g. math/rand/v2's (*Rand) N[Int intType](Int) Int.

  • Language: struct literal keys can now be any valid field selector, not just a top-level field name.

  • Language: function type inference now applies whenever a generic function is assigned to or converted to a matching function type.

  • New encoding/json/v2 and encoding/json/jsontext packages; stdlib encoding/json is now backed by v2 (stricter UTF-8/duplicate-name defaults), opt out via GOEXPERIMENT=nojsonv2.

  • New crypto/mldsa package implementing post-quantum ML-DSA signatures (FIPS 204); crypto/x509 and crypto/tls (TLS 1.3) gain ML-DSA support.

  • New experimental simd package (portable, vector-size-agnostic) and updated simd/archsimd (now adds arm64 Neon and WebAssembly SIMD), both under GOEXPERIMENT=simd.

  • Faster small (<80 byte) memory allocations via size-specialized allocation routines, up to 30% faster for those allocations (~1% overall), at a ~60KB binary size cost.

  • Goroutine leak profiling (goroutineleak) is now generally available in runtime/pprof and net/http/pprof, promoted from Go 1.26 experiment.

  • asynctimerchan GODEBUG setting removed permanently; time-created channels are now always unbuffered.

  • go mod tidy now auto-merges duplicate require blocks into a clean two-block layout for modules on go 1.27+.

  • unicode package and related support upgraded from Unicode 15 to Unicode 17.

  • go command drops bzr VCS support; ppc64 Linux now supports ELFv2 ABI with cgo, PIE, and external linking; macOS 13 Ventura is now the minimum supported version.