$ the-wire · showcase
HTTP/2 retry loop collapse, RemoveAll stops swallowing errors
By RepoJournal · Filed · About Go · Composed from the cited sources · methodology
The stdlib fixed two silent-failure bugs today: a net/http HTTP/2 retry loop that could spin forever against a misbehaving server, and os.RemoveAll dropping errors on js/wasm and plan9.
simd/archsimd: clean up implementation notes in hand-written files golang/go
The HTTP/2 Transport's own retry loop is gone; net/http now owns retries for both protocols. This fixes a long-standing bug where a server that sends a GOAWAY on the first request can bounce between two retry loops in an infinite cycle.
encoding/json: remove addr helper golang/go
The addr[T] generic helper is deleted from encoding/json now that new(value) is a built-in as of Go 1.26. Every call site becomes new(T) or new(value).
os: don't drop errors in RemoveAll on js/wasm and plan9 golang/go
The noat implementation of RemoveAll redeclared err inside its directory loop, so failures removing entries further down were collected in the loop-local variable and thrown away. Callers on js/wasm and plan9 were told the tree was gone when it wasn't.
gopls/internal/test: allow marker tests at CWD directory golang/tools
gopls' -debug flag used to pass addresses like :12345 straight to net.Listen, exposing the unauthenticated debug server on all interfaces. An implicit host is now rejected with the same error as -listen, and debug.Instance.Serve covers the gopls.start_debugging command too.
devtools/cmd/wait_available: fail on timeout instead of running command golang/pkgsite
wait_available used to silently break its retry loop on --timeout and run the target command anyway, hiding readiness failures behind 300s delays. It now exits with a fatal error; this is the long tail behind the bookworm pkgsite test fixes.
Action items