103 wires and counting

$ follow Go

Keep up with Go in about 3 minutes: what actually shipped — the commits, pull requests, releases, and security advisories that matter.

or

fair warning: these emails are deeply technical. diffs, version numbers, CVEs, benchmark deltas. if that's not your idea of a good read, this isn't your newsletter.

Folds into your digest — weekly by default, monthly if you prefer. Unsubscribe in one click.

$ status

wire 2026-09-05
stories 26

© 2026 RepoJournal Home Showcase Explore How it works Privacy

$ the-wire · showcase

crypto/tls frees pinned buffers, compiler tail call DCE fix lands

By RepoJournal · Filed · About Go

TLS connections no longer pin record-sized buffers during blocked reads, and a compiler fix prevents linker drops that caused unreachable method panics.

crypto/tls no longer pins record-sized buffers while a connection is blocked in Read [1]. A Conn's rawInput buffer, a bytes.Buffer, grew to the maximum record size (~17 kB) and never shrank, so long-polling or idle connections stranded that heap memory for minutes or hours. Servers with millions of open TLS connections lost gigabytes to buffers holding no data. The hand buffer similarly retained memory after use.

The compiler now marks interface calls as used when generating tail call wrappers [2]. The linker previously dropped callees via DCE, causing an unreachable method runtime panic; this marks the calls as used and fixes that panic.

encoding/json restores historical behavior for named string map keys [3]: MarshalText is no longer called on them, matching pre-1.26 behavior. unicode/utf16.Encode avoids overallocating for invalid runes above U+10FFFF [4], and math.Log2's accuracy near 1 improves dramatically, with worst error dropping from 9.6e14 to 1.31 ulp over 13442 arguments on darwin/arm64 [5].

gcexportdata deprecates NewReader as the project decouples the compiler's "u" format from the "i" format used by x/tools [6]. gopls now handles new(expr) completions for Go 1.26 and later [7], and the modernize analyzer elides redundant clones in appendclipped [8]. gopls protocol tracing fixes an error-handling bug found by telemetry and a memory leak [9]. The website sorts prerelease versions numerically, so rc10 now sorts ahead of rc9 [10], and the minimum macOS version for Go 1.27 updates per go.dev/doc/go1.27#darwin [11].

Action items

References

  1. [1] crypto/tls: don't pin record-sized buffers while blocked in Read ↗ golang/go
  2. [2] cmd/compile: correctly mark interface calls as used for tail call wrappers ↗ golang/go
  3. [3] encoding/json: avoid calling MarshalText on named string map keys ↗ golang/go
  4. [4] unicode/utf16: avoid overallocating in Encode ↗ golang/go
  5. [5] math: improve Log2 accuracy near 1 ↗ golang/go
  6. [6] go/gcexportdata: update package docs + minor tweaks ↗ golang/tools
  7. [7] gopls/internal/golang/completion: handle new(expr) ↗ golang/tools
  8. [8] go/analysis/passes/modernize: elide redundant clone in appendclipped ↗ golang/tools
  9. [9] gopls/internal/protocol: trace error messages ↗ golang/tools
  10. [10] internal/dl: sort multi-digit prerelease versions numerically ↗ golang/website
  11. [11] internal/dl: update minimum macOS version for Go 1.27 ↗ golang/website

Quick answers

What shipped in Go on September 5, 2026?
TLS connections no longer pin record-sized buffers during blocked reads, and a compiler fix prevents linker drops that caused unreachable method panics. In total, 26 commits landed.
Who contributed to Go on September 5, 2026?
12 developers shipped this update, including Brad Fitzpatrick, Cuong Manh Le, Joe Tsai, cuishuang, Raphaël Kanapitsas, Alan Donovan, Peter Weinberger, and Vladislav Bulgakov, and 4 more.
What were the notable Go updates?
crypto/tls: don't pin record-sized buffers while blocked in Read, cmd/compile: correctly mark interface calls as used for tail call wrappers, and encoding/json: avoid calling MarshalText on named string map keys.