167 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-10-22
stories 21

© 2026 RepoJournal Home Showcase How it works Privacy

$ the-wire · showcase

UUID.Compare goes constant-time, synctest gets out of WaitGroup's way

By RepoJournal · Filed · About Go · Composed from the cited sources · methodology

Two runtime-level fixes land in golang/go, one making UUID sorting cheap on prefix-heavy UUIDv7s and one removing a non-inlinable call from every WaitGroup.Add, while the build and tools repos keep clearing deprecated infrastructure and confusing APIs.

uuid: use bytes.Compare in UUID.Compare golang/go

by 唐木 稜生

UUID.Compare compared byte by byte, so cost grew with the shared prefix; it now uses bytes.Compare, which on arm64 compares the 16 bytes as two 64-bit words and is roughly constant time. Since UUIDv7 values lead with a big-endian millisecond timestamp, this is the path that matters when sorting them or using them as ordered keys.

internal/synctest: make IsInBubble inlinable when no bubbles exist golang/go

by Brad Fitzpatrick

IsInBubble lived in the runtime, so every sync.WaitGroup.Add paid for a non-inlinable call even in programs that never touch synctest. Brad Fitzpatrick made it inlinable and calls into the runtime only when bubbles exist, ahead of the sync change that stops using Pool inside bubbles.

internal/task: replace gcr.io/cloud-builders/npm with node:24.15.0 golang/build

by Hongxiang Jiang

The gcr.io/cloud-builders/npm image was frozen at Node 19.0.0 for latest and 18.12.0 for lts since 2022-10-25, and npm ci was emitting EBADENGINE warnings during vscode-go release tasks. It is replaced with node:24.15.0, as Cloud Build no longer maintains language-specific Node builder images.

go/analysis/passes/modernize: rangeint: check for aliased variables golang/tools

by Peter Weinberger

The rangeint modernizer rewrote 3-clause loops that assign to a pre-existing variable into range loops, changing the variable's value after the loop from limit to limit-1 and sharing one variable across iterations. It now checks for aliases, including pointers taken before the loop and dereferenced after it, and closures, which the old AST walk missed.

internal/typeparams: remove TypeSet.Empty golang/tools

by Alan Donovan

TypeSet.Empty is gone: the empty type set is a non-nil termlist of length zero and an unrestricted one is a nil termlist, so iterating Terms covers both. That removes the Empty() versus Len()==0 distinction and one word of representation, an internal package change only.

Revert "runtime: fix timespec definition on 32bits systems" golang/go

by Jorropo

Jorropo reverted the 32-bit timespec fix after finding the change referenced the internal linux timespec struct rather than the UAPI one. Also landed quietly: Fedora OpenBSD and FreeBSD builder images got more threads, 14.5 and 15.1 with GVNIC, and regenerated telemetry upload config.

Quick answers

What shipped in Go on October 22, 2026?
Two runtime-level fixes land in golang/go, one making UUID sorting cheap on prefix-heavy UUIDv7s and one removing a non-inlinable call from every WaitGroup.Add, while the build and tools repos keep clearing deprecated infrastructure and confusing APIs. In total, 16 commits and 5 pull requests landed.
Who contributed to Go on October 22, 2026?
11 developers shipped this update, including Jesse Rosenstock, 唐木 稜生, Jorropo, Brad Fitzpatrick, Hongxiang Jiang, Michael Matloob, Alan Donovan, and Elena, and 3 more.
What were the notable Go updates?
uuid: use bytes.Compare in UUID.Compare, internal/synctest: make IsInBubble inlinable when no bubbles exist, and internal/task: replace gcr.io/cloud-builders/npm with node:24.15.0.