The Wire · Showcase
HTTP/2 API RESTORED FOR GO 1.27 COMPATIBILITY
By RepoJournal · Filed · About Go
Go's http2 package accidentally dropped critical symbols in the 1.27 build — they're back now, preserving compatibility for applications relying on ErrNoCachedConn, ErrPushLimitReached, and friends.
The http2 wrapping implementation in golang/net [1] lost four error types and one constant during refactoring, breaking any code that caught or referenced them. Cherry Mui's team restored ErrNoCachedConn, ErrPushLimitReached, ErrRecursivePush, and TrailerPrefix to their original locations, plus added FrameWriteRequest methods back as no-ops to prevent runtime surprises. Separately, QUIC buffer slicing is now fixed [2] — overlapping stream data was being written multiple times instead of deduplicated, causing spurious FINAL_SIZE_ERROR crashes. On the stdlib side, importer.ForCompiler is officially un-deprecated [3] after the deprecation warning was meant to apply only to a parameter, not the entire function. Runtime/cgo also regained critical acquire/release synchronization around malloc [4] that was accidentally dropped, fixing concurrency bugs in #67800 and #78479.
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
- → Update golang/net to pick up http2 symbol restoration and QUIC fixes golang/net [immediate]
- → Rebuild with latest Go tip if using runtime/cgo — malloc synchronization is restored golang/go [plan]
- → Monitor compiler inlining and ARM64 changes for potential codegen differences golang/go [monitor]
References
- [1] http2: avoid API changes when built with go1.27 golang/net
- [2] quic: fix buffer slicing when handling overlapping stream data golang/net
- [3] go/importer: un-deprecate importer.ForCompiler golang/go
- [4] runtime/cgo: add acquire/release back around malloc golang/go