Skip to content

new(go.dev/dev-simd): Go toolchain from the dev.simd branch (SIMD intrinsics)#13169

Open
tannevaled wants to merge 1 commit into
pkgxdev:mainfrom
tannevaled:new/go.dev/dev-simd
Open

new(go.dev/dev-simd): Go toolchain from the dev.simd branch (SIMD intrinsics)#13169
tannevaled wants to merge 1 commit into
pkgxdev:mainfrom
tannevaled:new/go.dev/dev-simd

Conversation

@tannevaled
Copy link
Copy Markdown
Contributor

What

Adds go.dev/dev-simd: the Go toolchain built from upstream Go's experimental dev.simd branch (targeting Go 1.27), which provides the simd/archsimd package — portable SIMD intrinsics written in plain Go (no cgo, no hand-written assembly) that the compiler lowers to AVX2/AVX-512 on amd64 and NEON on arm64.

Why

simd/archsimd isn't in a released Go yet: amd64 shipped in Go 1.26 behind GOEXPERIMENT=simd, but arm64 (NEON) only exists on dev.simd (slated for 1.27). This package lets people build/benchmark SIMD Go today on both amd64 and Apple-Silicon/arm64, reproducibly from a pinned commit, before 1.27 lands.

How it's structured

  • Sub-package of go.dev (alongside go.dev/govulncheck, go.dev/testscript).
  • Pinned-commit snapshots of a tagless branch, versioned by the commit's committer date as CalVer (YYYY.M.D.HH.MM.SS). distributable: ~ + a version → SHA case in build.script fetches the exact commit. First version 2026.6.1.17.4.35 = commit 0e5948dc. (The archive has no .git/VERSION, so a VERSION is synthesized for cmd/dist.)
  • No provides: / interprets: on purpose: it ships bin/go like go.dev, so it must not claim the bare go/gofmt commands or the .go interpreter. Used explicitly: pkgx +go.dev/dev-simd -- go ….
  • README renders on pkgx.dev (rationale, usage, versioning, caveats).

Verified

bk build and bk audit pass. The built toolchain reports go1.27, and GOEXPERIMENT=simd go run of a simd/archsimd program works — including NEON Uint32x4 on darwin/arm64.

Note for maintainers

This packages a snapshot of a moving pre-release dev branch, not a tagged Go release — flagging that explicitly so you can decide whether it fits the pantry's scope. It is experimental (the simd package is outside the Go 1 compatibility promise) and opt-in (no command shadowing). Happy to adjust naming/structure, restrict platforms, or close if it's out of scope.

🤖 Generated with Claude Code

…rinsics)

Builds Go from upstream's experimental `dev.simd` branch (targeting Go 1.27),
which adds the `simd/archsimd` package — portable SIMD intrinsics written in
plain Go (no cgo, no hand-written assembly) that lower to AVX2/AVX-512 on amd64
and NEON on arm64.

Why: `simd/archsimd` isn't in a released Go yet — amd64 shipped in 1.26 behind
GOEXPERIMENT=simd, but arm64 (NEON) only exists on `dev.simd` (slated for 1.27).
This lets you build/benchmark SIMD Go today on both amd64 and arm64, from a
pinned commit.

Details:
- Sub-package of go.dev (alongside go.dev/govulncheck, go.dev/testscript).
- Pinned-commit snapshots of a tagless branch, versioned by the commit's
  committer date as CalVer (YYYY.M.D.HH.MM.SS); `distributable: ~` + a
  version->SHA case in build.script fetches the exact commit. First version
  2026.6.1.17.4.35 = commit 0e5948dc.
- No `provides:`/`interprets:` on purpose: it ships bin/go like go.dev, so it
  must not claim the bare `go`/`gofmt` commands or the `.go` interpreter. pkgx
  has no conflicts field; the mutual exclusion is to use it explicitly via
  `pkgx +go.dev/dev-simd`.
- README renders on pkgx.dev (rationale, usage, versioning, caveats).

Verified: `bk build` + `bk audit` pass; the built toolchain reports go1.27 and
`GOEXPERIMENT=simd go run` of a `simd/archsimd` program works, incl. NEON
Uint32x4 on darwin/arm64.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant