The state of SIMD in Rust in 2026
2 hours ago
- SIMD (Single Instruction, Multiple Data) improves performance by processing multiple numbers at once, but faces portability and optimization challenges.
- Different CPU architectures have distinct SIMD instruction sets (SSE, AVX, NEON, WASM), requiring runtime dispatch or multiversioning for broad support.
- Three approaches to using SIMD in Rust: automatic vectorization (unreliable), portable SIMD abstractions (multiple libraries), and platform-specific intrinsics.
- Portable SIMD libraries (std::simd, fearless_simd, wide, pulp, macerator) vary in multiversioning, generics, trigonometry support, and platform coverage.
- Safe access to intrinsics improved in Rust 1.87+, but intrinsic implementations suffer from compiler optimization bugs and tension with hardware capabilities.
- Hardware issues: x86 has messy history (AVX2 limitations, AVX-512 downclocking), ARM NEON is well-designed, while RISC-V vectors and others are currently impractical.
- The Rust SIMD ecosystem has matured significantly, with gaps remaining in trigonometry and std::simd stability.