$ cat golang/month/2026-08-01.log
the month in review · August 2026
Go compiler hardens binaries, crypto tightens SSH safety
The Go project spent August fixing pointer-offset bugs that inflated binaries and threatened correctness, then shored up SSH, HTTP/2, and TLS across the ecosystem.
The month's most consequential work landed in the compiler, where stack object records now use pointer-size alignment [1] and mips64le pointer offsets beyond 32 bits are corrected [2]. These fixes shrink binaries on AMD64 and eliminate subtle miscompilations on MIPS64, changes that matter for anyone shipping to exotic architectures or watching binary size creep.
A second compiler thread tightened correctness around range-clear safety [3] and load merging, which now tracks visited values instead of iterations to avoid missing merge opportunities [4]. The inliner's disjointness check also shifted to use types recorded in Store operations [5], improving optimization precision. Meanwhile, internal SSA refactoring added an HTML debug flag [6] and removed the HTMLWriter from Func [7], laying groundwork for future debug tooling.
The crypto and net stack saw targeted fixes. The SSH implementation now returns window credit for discarded extended data [8], preventing stalls in channels. Poly1305 gained optimized assembly for riscv64 [9], and so does x86 ABI0 NOFRAME BP expectations [10]—a breaking fix for code relying on the prior behavior. A fixed frame pointer adjustment around injected calls [11] closes a subtle runtime bug.
On the tooling side, vscode-go updated impl to v1.5.0 [12]. The pkgsite frontend improved documentation signals by checking local interfaces [13] and accepting group comments [14], making generated docs more accurate. Benchmarks shifted from benchmarks-50 to benchmarks-100 [15], which should give larger, more stable sample sets for regression detection.
Cleanups continued steadily: net/rpc dropped unused sort.Interface methods [16], and bytes/strings removed redundant DecodeRune fast paths [17]. The latter is a small but real simplification of hot-path code.
References
- [1] cmd/compile: use pointer-size alignment for stack object records ↗ golang/go
- [2] cmd/compile: fix mips64le bigger than 32bits pointer offsets ↗ golang/go
- [3] cmd/compile: avoid range clear when target depends on index ↗ golang/go
- [4] cmd/compile: track visited values, not iterations, in canMergeLoad ↗ golang/go
- [5] cmd/compile: change disjoint to use types recorded in the Store operations ↗ golang/go
- [6] cmd/compile/internal/ssa: add html debug flag ↗ golang/go
- [7] cmd/compile/internal/ssa: remove HTMLWriter from Func ↗ golang/go
- [8] ssh: return window credit for discarded extended data ↗ golang/crypto
- [9] crypto/internal/poly1305: provide optimised assembly for riscv64 ↗ golang/crypto
- [10] cmd/internal/obj/x86: fix breaking change in ABI0 NOFRAME BP expectations ↗ golang/go
- [11] runtime: fix frame pointer adjustment around injected calls ↗ golang/go
- [12] src/goInstallTools: update impl to v1.5.0 ↗ golang/vscode-go
- [13] internal/frontend: doc signal: check local ifaces ↗ golang/pkgsite
- [14] internal/frontend: doc signal: accept group comments ↗ golang/pkgsite
- [15] cmd/bench: replace benchmarks-50 with benchmarks-100 ↗ golang/benchmarks
- [16] net/rpc: remove unused sort.Interface methods ↗ golang/go
- [17] bytes, strings: remove redundant DecodeRune fast paths ↗ golang/go
$ ls golang/month/ # the briefings behind this review