← Thu, Sep 24 digest

Fearless SIMD v1.0

read article ↗ hn thread ↗

Fearless SIMD v1.0 is released for Rust, removing unsafe code from vector processing, introducing clean function multiversioning, and supporting stable compilers.

read it Rust developers building high-performance software will appreciate the deep dive into eliminating unsafe code and achieving clean function multiversioning on stable Rust.

summary

Fearless SIMD v1.0 has been released, bringing safe, portable, and high-performance vector processing to stable Rust without requiring widespread unsafe blocks. The crate isolates unsafe code into a tiny, audited core utilizing compiler target features and safe transmutes, while a new procedural macro handles seamless function multiversioning. It serves as a robust stable alternative to standard library SIMD abstractions, already underpinning dozens of downstream crates.

key points

  1. Eliminates ad-hoc unsafe code by encapsulating vector logic within a small, audited kernel macro and safe transmute module.
  2. Provides the #[simd] macro for seamless function multiversioning on stable Rust without leaky abstractions.
  3. Includes precise and fast variants for platform-dependent edge cases like floating-point maximum and swizzles.

who should read it

Rust systems engineers and performance-critical software developers.

discussion warm

consensus

Commenters are enthusiastic about the 1.0 release, noting it successfully brings robust, stable SIMD to projects that previously depended on nightly Rust or std::simd.

pushback

Some discussion focuses on library naming conventions and versioning rather than technical flaws.

best comment by O3marchnative ↗

This is quite amazing. Fearless SIMD is what finally allowed my FFT crate, PhastFT, to run on stable Rust [0]. PhastFT previously depended on Rust’s std::simd (as well as multiversion), which still requires nightly [1].

One of the main contributors to v1.0 of fearless_simd started out by helping me evaluate portable SIMD crates for PhastFT. Once we landed on fearless_simd, he ported PhastFT from std::simd to fearless_simd. We did find that more functionality was needed than fearless_simd offered at the time. So, he started contributing significantly to fearless_simd. It’s really rewarding to …

An early adopter shares a concrete success story of migrating an FFT crate from nightly std::simd to fearless_simd on stable Rust.

Generated by an LLM from the article and thread. Check the sources before relying on it.