$ cat golang/month/2026-10-01.log
the month in review · October 2026
Go toolchain patches three CVEs as gopls hits v0.24.0
By RepoJournal · composed from the cited sources · human-reviewed weekly · methodology
Template context escaping and toolchain checksum verification both changed behavior, so rebuilds that previously passed may not.
cmd/go: always verify toolchain downloads with sumdb golang/go
Instead of accepting a matching sumdb entry that names golang.org/toolchain, cmd/go now goes to the network for the canonical checksum. If your CI pins toolchains behind a mirror or proxy that blocks that fetch, expect it to fail until you allow it.
html/template: reset JS context for template expressions golang/go
Regular expressions at the start of template expressions now get regexp escaping, closing a JS context leak tracked as CVE-2026-94448. Templates that emit regex literals in script contexts should be re-checked against rendered output.
html/template: recognize `yield` as regexp preceder keyword golang/go
The companion fix treats `yield` as a regexp preceder keyword while leaving non-keyword uses unescaped. The template package now escapes a category of expression it previously let through, which is the kind of change that shows up as a diff in golden files.
net/http: add nethttpomithttp2server and nethttpomithttp2client build tags golang/go
Two new build tags, nethttpomithttp2server and nethttpomithttp2client, let a binary drop one half of HTTP/2; previously the all-or-nothing nethttpomithttp2 tag was the only option. Binary-size-sensitive services using http.Server can now shed the server side without losing the client.
gopls v0.24.0 golang/tools
The language server cut a minor release in mid-October, with pinning and filepath fixes behind it, then enabled MoveDeclaration and reduced cold-check I/O later in the month. MoveType was deleted. The release notes are the reference for editor config changes.
go/ssa, cmd/deadcode: release type information once functions are built golang/tools
Function values no longer hold their package's types.Info alive for the lifetime of the Program, so long-running analysis tools like cmd/deadcode keep less in memory. The change targets generic origins that never released their info.
internal/postgres: refine trigger for symbol search golang/pkgsite
The trigger updating symbol_search_documents.imported_by_count now fires only when that column actually changes. The result is over 100x speedup for updating module import counts, a pkgsite backend change you feel only as faster search indexing.
cmd/compile/internal/syntax: return string rather than []byte from source.segment golang/go
source.segment switched from []byte to string after the team found every call but the keyword case converted anyway, and the compiler separately learned to handle NUL bytes and tightened shift type-checking. Alongside these: UUID.Compare went constant-time, a golang/net change ensures raw text rendering, and Windows SendFile stopped reporting partial 2 GiB+ transfers as success.
$ ls golang/month/ # the briefings behind this review
Keep up with Go in about 3 minutes: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
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.