Go 1.25 released — DWARF5, stricter nil‑check semantics, jsonv2 experiment, and toolchain changes

GoToolingBack-end

Key update

Go 1.25 (released Aug 12, 2025) is a practical, developer‑impacting release rather than a purely incremental bump. The release introduces DWARF‑5 debug output and linker options that reduce binary size and link time for large programs, fixes a long‑standing compiler bug that now enforces spec‑correct nil‑pointer checks (which can make previously‑running-but-incorrect code panic), graduates the synctest concurrent‑testing support, and exposes an experimental high‑performance encoding/json/v2 implementation behind GOEXPERIMENT=jsonv2. The toolchain also changes some defaults: AddressSanitizer now defaults to leak detection at program exit, the go command will build fewer prebuilt helper binaries, and new vet analyzers (e.g., waitgroup and hostport) ship to catch common concurrency and networking mistakes.

Why it matters

The nil‑pointer fix is the highest‑risk real‑world change: code that incorrectly used values produced before checking an error can now panic; this requires running your test suite and CI under Go 1.25 to find regressions and fix them (move error checks earlier or refactor). DWARF‑5 and the linker options materially speed up debug builds and reduce symbol size for large services and monorepos, improving developer iteration times and CI cost. The jsonv2 experiment delivers substantially faster decoding in many workloads; it’s worth trying in staging for JSON‑heavy services because behavior is slightly different and error text can change. The ASAN leak‑detection default can break tests that rely on C allocations not being freed; adjust ASAN_OPTIONS in CI if necessary. The new vet analyzers and synctest make it easier to catch concurrency bugs earlier. Actionable steps: pin the toolchain in CI, run full test suites under Go 1.25 (and try GOEXPERIMENT=jsonv2 in a controlled environment), enable the new vet analyzers, and audit code that relies on len/cap hacks, unsafe.Pointer patterns, or deferred error checks.

Source

Read Next