$ the-wire · showcase
Linker fix for over-aligned text sections, simd internal refactor
By RepoJournal · Filed · About Go · Composed from the cited sources · methodology
The day's real work is in golang/go's simd and linker internals, plus a CI migration from docker to podman across pkgsite and vscode-go.
cmd/link: align split text sections for over-aligned functions golang/go
When the linker splits text into multiple sections, each new section started at Funcalign; if it then held a function with a larger alignment from PCALIGN, (*Link).address rounded the section start up after symbol addresses were assigned and the symbols fell outside their section, panicking with "machorelocsect: size mismatch" on darwin/arm64 with external linking. This generalizes the alignmen...
simd: move sliceToString to simd/internal/simdfmt golang/go
simd/archsimd, simd, and the generated simd/internal/bridge each carried their own sliceToString; it now lives in a new package simd/internal/simdfmt as SliceToString, with tmplgen, wasmgen, and simdgen emitting calls to it. The replacement is O(n) instead of O(n^2), allocates substantially less, and rejects types it cannot actually format.
go/build: move simd/internal/spec up the package DAG golang/go
simd/internal/spec moves up the package DAG. Clements' reasoning: spec represents every vector as a slice, so the implementation is "rife with allocation", which rules out the original hope of using it as an emulated simd/archsimd importable by runtime.
devtools: allow running tests with podman instead of docker golang/pkgsite
pkgsite's devtools can now run tests with podman instead of docker, with a docker.io prefix on image references since podman does not assume it. Docker is barred in many environments on security grounds, and the linux-amd64 builders on Debian 12 needed the workaround.
simd/archsimd/_gen: stop autogenerating SPEC-STATS.md golang/go
SPEC-STATS.md is dropped from the default simd generator because unrelated simd changes kept producing uninteresting conflicts in it, forcibly serializing commits. The file is progress tracking for the spec transition, so staleness is acceptable as long as it is refreshed during that work. Trivial also: a dead comment removed from go/types and types2, and a security-considerations section added...