The Wire · Showcase
GO COMPILER REWRITES SPLIT FOR PARALLEL BUILDS
By RepoJournal · Filed · About Go
Michael Matloob's refactoring push splits Go's SSA rewrite rules into per-package files, unlocking parallel compilation for the compiler itself.
The Go compiler is getting a major internal refactor as Michael Matloob splits the SSA rewrites out of ssacompile into one package per .rules file, aiming to build them all in parallel [1]. The amd64 rules package still dominates, so the split isn't even, but it's a start. Alongside that, Egon Elbre canonicalizes zero comparisons to equalities, filling two missing table cells so bit-test recognizers see one canonical spelling [2]. Matloob also moved the HTML writer to its own package and shipped a new op package for the Op type, shedding more ssagen dependencies [3][4]. As he puts it, this "allows all the rules to be built in parallel" [1]. In the VS Code extension, Hongxiang Jiang deprecates the wmic process picker in favor of a Rust-backed dependency recommended by a VS Code maintainer [5]. Meanwhile, Damien Neil restored docs in golang/net warning that h2c's NewHandler reads entire requests into memory, a caution that was lost in a terse deprecation notice [6]. Finally, David Chase relaxed InfluxDB's allowed-character regexp to accommodate "excessively creative" benchmark names like `DijkstraAllPaths_AllBetween_1000×16|0.1(828)-96` [7].
One email a day. Unsubscribe in one click.
Keep up with Go in about 3 minutes a day: what actually shipped — the commits, pull requests, releases, and security advisories that matter.
One email a day. Unsubscribe in one click. Read a past issue →
Action items
- → Review the SSA rewrite split for any impact on your custom compiler patches golang/go [monitor]
- → Update VS Code Go to pick up the new process picker and test on Windows golang/vscode-go [plan]
- → Be aware of the NewHandler memory caveat when using h2c in production golang/net [monitor]
References
- [1] cmd/compile/internal/ssarewrite: split rewrites into packages golang/go
- [2] cmd/compile/internal/ssa: canonicalize zero comparisons to equalities golang/go
- [3] cmd/compile/internal/ssa: move the HTML writer to ssahtml golang/go
- [4] cmd/compile/internal/ssa: move Op to op package golang/go
- [5] extension/src/utils: deprecate wmic windows process picker golang/vscode-go
- [6] http2/h2c: restore documentation of NewHandler unsafety golang/net
- [7] internal/perf: add "|" to InfluxDB allowed-in-string chars golang/build