Go 1.27 adds portable SIMD API across architectures
Original: Platform-Independent SIMD in Go
Why This Matters
Portable SIMD lowers the bar for high-performance Go code without requiring assembly expertise.
The Go team introduced a platform-independent SIMD package in Go 1.27, following the architecture-specific APIs added in Go 1.26 for amd64. The new 'simd' package supports AVX/AVX2/AVX512, ARM64 NEON, and WebAssembly SIMD, offering near-assembly performance with a single portable codebase.
Go 1.26 shipped an experimental SIMD API scoped to amd64, letting developers tap into CPU vector instructions without writing Go assembly. Go 1.27 extends that with arm64 (NEON) and WebAssembly support, then goes further with a fully portable 'simd' package modeled loosely on the C++ Highway library.
The core problem SIMD poses for a portable API is architectural chaos: wasm, PowerPC, and s390x offer fixed 128-bit vectors; amd64 supports 128, 256, and 512 bits; RISC-V allows anywhere from 128 to 65,536 bits at runtime; and ARM64 ships both fixed-width NEON and variable-width SVE. Previous Go SIMD access required hand-written assembly, limiting adoption to tightly scoped compute kernels.
The new platform-agnostic package abstracts over these differences, targeting write-once code that hits near-assembly speeds where hardware SIMD exists and falls back to a software emulation elsewhere. Go's own Green Tea garbage collector already uses SIMD internally to accelerate live-object memory scans — a concrete signal of how significant the performance gains can be across cryptography, data processing, and AI workloads.
Both the architecture-specific 'archsimd' packages and the portable 'simd' package remain explicitly experimental in Go 1.27.