$ the-wire · showcase
GO COMPILER FIXES MIPS64 POINTER BUGS, SHRINKS BINARIES ON AMD64
By RepoJournal · Filed · About Go · Composed from the cited sources · methodology
Brad Fitzpatrick landed a stack object alignment fix that uncovers and fixes a latent mips64le pointer offset bug while accidentally making amd64 and arm64 binaries smaller.
The compiler received three critical fixes across pointer handling and architecture-specific edge cases [1] [2]. Brad's alignment change fixes mips64 under qemu-user and shrinks binaries on the mainstream platforms [1], while a follow-up from Jorropo addresses the bigger-than-32-bit pointer offsets that the alignment change exposed in mips64le [2]. In parallel, Josh Bleecher Snyder rewrote the canMergeLoad walk to track visited values instead of iterations, fixing load folding in unrolled crypto functions where the old approach gave up early [3]. On the IDE front, vscode-go bumped impl to v1.5.0 for better interface stub generation [4], and Daniel Morsing added an html debug flag to SSA compilation to let developers target specific packages without cache busting [5]. pkgsite's documentation signal system got smarter about interface methods and group comments: it now recognizes when methods implement documented interfaces and doesn't require redundant docs, and it accepts group-level comments on const and var declarations as documentation for the whole group [6] [7]. Benchmark metadata got a housekeeping rename from benchmarks-50 to benchmarks-100 for accuracy [8]. One doc comment cleanup shipped on syscall [9].
Action items
- → Watch the mips64 fix cascade across your build matrix, especially if you support that architecture golang/go [monitor]
- → Test arm64/amd64 binaries if you're benchmarking size - the alignment change may have unexpected benefits golang/go [plan]
- → Update vscode-go if you use impl for interface generation - v1.5.0 is the new baseline golang/vscode-go [plan]
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: track visited values, not iterations, in canMergeLoad ↗ golang/go
- [4] src/goInstallTools: update impl to v1.5.0 ↗ golang/vscode-go
- [5] cmd/compile/internal/ssa: add html debug flag ↗ golang/go
- [6] internal/frontend: doc signal: check local ifaces ↗ golang/pkgsite
- [7] internal/frontend: doc signal: accept group comments ↗ golang/pkgsite
- [8] cmd/bench: replace benchmarks-50 with benchmarks-100 ↗ golang/benchmarks
- [9] syscall: remove duplicate word from Errno godoc comment on plan9 ↗ golang/go