Rust's SIMD ecosystem finally grows up

The state of SIMD in Rust in 2026

Sergey "Shnatsel" Davidoff surveys the state of SIMD in Rust for 2026, now as a maintainer of Fearless SIMD. He compares five approaches: std::simd, fearless_simd, wide, pulp, and macerator, across multiversioning, portability, and instruction set support. The takeaway: automatic vectorization remains unreliable, std::simd is nightly-only and incomplete, and fearless_simd emerges as the most complete all-in-one solution.

Floats are weird. Even something as trivial as summing an array of floats with reasonable precision gets surprisingly involved.
  1. sharktheone

    I am hoping for portable SIMD so much. But I still think that often a manually rolled SIMD will be faster.

    Also the state of SIMD in Cranelift is also very WIP. They pretty much just support a subset of 128bit vectors with some rare exceptions.

  2. the__alchemist

    I am using my own lib, `lin_alg`, which apes core_simd for floating point values, and extends the concept to vectors and quaternions. I will eventually replace the floating point portions with core::simd upon its arrival in stable Rust.

    Downside: It's currently x86 only.

  3. Archit3ch

    Hot take: there is no portable SIMD.

    You can either have performance (=write manual ASM for each platform), or portability, but not both.

    What so-called "portable SIMD" libraries give you is "portable auto-vectorization". "Portable performance" is a global property of the algorithm. Relying on auto-vectorization will result in e.g. sub-optimal register spills in practice. The microbenchmarks will look great, though. ;)

More from this day

2026-09-27