The Wire · Showcase
COMPILER SHRINKS CODE SIZE WHILE QUIC FIXES BUSY-LOOP HANGS
By RepoJournal · Filed · About Go
The Go compiler now frees unused registers at loop headers, cutting generated code size across all architectures, while the net package fixes a critical QUIC keep-alive deadlock that was burning CPU on blocked connections.
The cmd/compile team landed a register allocation optimization [1] that eliminates pointless reloads when loops make unavoidable calls. Since those calls will clobber the registers anyway, freeing them upfront shrinks total code size by 0.07% to 0.2% depending on architecture. Separately, golang/net shipped a fix [2] for QUIC keep-alive that was causing busy-loops when congestion control blocked PING frames, and a second fix [3] ensuring Accept returns an error instead of blocking forever when the PacketConn reader exits. On the standards front, pkg/image addressed a memory explosion vulnerability [4] in VP8L decoding where unused Huffman tree groups could trigger excessive allocations from small files. The pkgsite team removed unnecessary goexperiment.jsonv2 enabling [5] that was incorrectly activating for encoding/json across Go versions, and crypto/x509roots updated the NSS root bundle [6].
One email a day. Unsubscribe in one click.
What actually shipped in Go, written up every day — commits, pull requests, releases, and security advisories.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Monitor your binary sizes in next build - register allocation changes may affect performance profiling golang/go [monitor]
- → If using QUIC, verify keep-alive behavior is stable in staging - the busy-loop fix prevents resource exhaustion golang/net [plan]
- → Review VP8L image handling if processing untrusted WebP files - memory allocation fix prevents DoS golang/image [plan]
References
- [1] cmd/compile: free doomed registers at loop headers golang/go
- [2] quic: avoid busy-loop when keep-alive is blocked by congestion control golang/net
- [3] quic: return an error from Accept after PacketConn reader exits golang/net
- [4] vp8l: avoid allocating many unused Huffman tree groups golang/image
- [5] internal/fetch: remove explicit goexperiment.jsonv2 enabling for encoding/json golang/pkgsite
- [6] x509roots/fallback: update bundle golang/crypto