$ the-wire · showcase
Compiler inlines recover, http.Transport.CancelRequest becomes a no-op
By RepoJournal · Filed · About Go
Go's compiler now inlines functions that call recover, and net/http deprecates Transport.CancelRequest to a no-op.
The Go compiler now allows inlining of functions that call recover [1]. Since CL 685355, the unwinder counts inline-expanded frames as separate logical frames, so inlining no longer affects whether recover stops the panic; this lifts a long-standing restriction at the usual call cost. Meanwhile, net/http's Transport.CancelRequest is now a no-op [2], removing the per-Transport map of in-flight requests; code that relied on it to cancel requests will need to use the request context instead. The module loader parallelizes local directory matching across patterns [3], so `go list ./... ./staging/src/...` now evaluates matchLocalDirs concurrently using a queue sized to GOMAXPROCS, while preserving output order. ReverseProxy now preserves the original header state on 1xx responses [4], fixing a case where it cleared headers entirely. In golang/net, QUIC adds Stream.StopSending and renames error types [5]: StreamErrorCode becomes StreamError, ApplicationError becomes ConnectionCloseError, and CloseRead/CloseWrite now return errors. gopls extends assembly References to cover control labels and file-local symbols [6], scoping labels to their enclosing TEXT function and <> symbols to their file. The security docs gain general principles and a policy on bug submission retention [7][8].
Action items
- → Review code calling http.Transport.CancelRequest and migrate to context cancellation before the method is removed golang/go [plan]
- → Test reverseproxy setups that rely on 1xx header clearing; behavior now preserves original headers golang/go [plan]
- → Update QUIC callers of StreamErrorCode and ApplicationError to the new names before upgrading golang/net [plan]
References
- [1] cmd/compile: allow inlining of functions that call recover ↗ golang/go
- [2] net/http: make Transport.CancelRequest into a no-op ↗ golang/go
- [3] cmd/go/internal/modload: parallelize for speed ↗ golang/go
- [4] net/http/httputil/reverseproxy: preserve original header on 1xx ↗ golang/go
- [5] quic: add Stream.StopSending, and rework stream/application errors ↗ golang/net
- [6] gopls: support assembly References for labels and asm-only symbols ↗ golang/tools
- [7] _content/doc/security: decisions: add general principles ↗ golang/website
- [8] _content/doc/security: document security bug submission retention ↗ golang/website