November 5, 2025
Nightly or nightmare?
The state of SIMD in Rust in 2025
Rust’s speed boost is still “nightly”—Chromium ships anyway while C# flexes
TLDR: Rust’s promised speed boost via SIMD is still not fully stable, so teams juggle workarounds like nightly builds, libraries, or multiple builds per CPU. Commenters are split between frustration over the delay and pragmatism, with extra spice from C# comparisons and RISC‑V gotchas—because performance still matters to everyone.
Rust folks showed up for a speed party and got a paperwork check. The article explains SIMD—think one instruction crunching a whole batch of numbers for a big speed-up—and maps the messy landscape: x86 has a zoo of features, ARM’s 64-bit phones all have NEON, and the web needs a separate “with/without” build. But the comments? Pure drama. The top vibe: why is Rust’s built‑in SIMD still not stable. One Chromium dev breezily says they’re fine using the nightly-only feature ([std::simd]—the unstable standard library option) while tiptoeing around the riskiest parts. That calm take only inflamed the crowd.
Cue the chorus of frustration: “nightly forever” memes, side‑eye at Rust’s slow rollouts, and a DIY rebel who built their own mini‑SIMD to avoid nightly—only to admit it’s x86‑only. Then a drive‑by from the peanut gallery: “Odd that C# does this better,” which triggered a round of embarrassed laughs and defensive essays. Another user dunked on the claim that only x86 has headaches, pointing out RISC‑V can’t even check what it supports from normal apps. Through it all, pragmatic voices say: let the compiler auto‑optimize, try portable libraries, or do function “multiversioning” (shipping multiple versions and picking at runtime). But the mood is clear: make it stable, already.
Key Points
- •SIMD applies a single instruction to vectors of data, offering large speedups; modern x86 supports vectors up to 512 bits.
- •x86 provides layered SIMD extensions (SSE2, SSE 4.2, AVX, AVX2, AVX-512); ARM’s NEON is mandatory on 64-bit ARM; WebAssembly has a 128-bit SIMD extension.
- •Because x86 CPUs vary in SIMD support, compilers default to SSE2; developers can either assert a modern baseline (e.g., AVX2 via x86-64-v3) or use function multiversioning.
- •ARM’s SVE is largely theoretical in 2025 with Rust support in progress; WebAssembly typically needs separate SIMD/non-SIMD binaries with JavaScript-based feature detection.
- •Rust offers four approaches to SIMD: automatic vectorization, fancy iterators, portable SIMD abstractions, and raw intrinsics; verification tools include cargo-show-asm and godbolt.org, with benchmarks as the final arbiter.