The Wire · Showcase
GO COMPILER FIXES MIPS64 POINTER BUGS, SHRINKS BINARIES ON AMD64
By RepoJournal · Filed · About Go
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].
One email a day. Unsubscribe in one click.
Keep up with Go in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
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