conv.

All stories
TechActive · 42h

Fearless SIMD v1.0 launches with safe, performant Rust abstractions

Eight years after its prototype, Fearless SIMD reaches stable release, eliminating unsafe code while maintaining hardware performance.

What to know

  • Fearless SIMD v1.0 reaches stable after 8 years, offering memory-safe SIMD programming for Rust without ad-hoc unsafe code blocks.
  • The library achieves safety through the kernel! macro and safe transmute module, requiring security audits of only two core components.
  • Performance is preserved through multiple abstraction levels—from portable operations to direct platform intrinsic access—and state-of-the-art compiler optimizations.

Fearless SIMD project Library developerLinebender Host/publisher

How it unfolded 1 development · click the chart to see its coverage posts

Peak 3 pieces in one hour at Sep 22, 2 PM; 12 pieces over 43 hours (3 posts · 9 comments) Sep 22, 7 AM — 2 pieces · 2 posts — Hacker News 1, Lobsters 1Sep 22, 8 AM — quietSep 22, 9 AM — quietSep 22, 10 AM — 1 piece · 1 comment — Lobsters 1Sep 22, 11 AM — 2 pieces · 2 comments — Lobsters 2Sep 22, 12 PM — 1 piece · 1 comment — Lobsters 1Sep 22, 1 PM — quietSep 22, 2 PM — 3 pieces · 3 comments — Lobsters 3Sep 22, 3 PM — quietSep 22, 4 PM — quietSep 22, 5 PM — 1 piece · 1 comment — Lobsters 1Sep 22, 6 PM — 1 piece · 1 comment — Lobsters 1Sep 22, 7 PM — quietSep 22, 8 PM — quietSep 22, 9 PM — quietSep 22, 10 PM — quietSep 22, 11 PM — quietYesterday, 12 AM — quietYesterday, 1 AM — quietYesterday, 2 AM — 1 piece · 1 post — Hacker News 1Yesterday, 3 AM — quietYesterday, 4 AM — quietYesterday, 5 AM — quietYesterday, 6 AM — quietYesterday, 7 AM — quietYesterday, 8 AM — quietYesterday, 9 AM — quietYesterday, 10 AM — quietYesterday, 11 AM — quietYesterday, 12 PM — quietYesterday, 1 PM — quietYesterday, 2 PM — quietYesterday, 3 PM — quietYesterday, 4 PM — quietYesterday, 5 PM — quietYesterday, 6 PM — quietYesterday, 7 PM — quietYesterday, 8 PM — quietYesterday, 9 PM — quietYesterday, 10 PM — quietYesterday, 11 PM — quietToday, 12 AM — quietToday, 1 AM — quiet 1
8 AM4 PMyesterday8 AM4 PMnow · 2:55 AM ET
  1. 1

    Fearless SIMD balances performance with portability

    The library provides both precise variants (identical across platforms) and fast variants (platform-dependent) for operations with different edge-case behavior. It enables algorithms to leverage hardware's native vector size while also supporting fixed vector sizes, and allows safe fallback to platform intrinsics with no overhead when portable abstractions are insufficient.

    “A common criticism leveled at portable SIMD abstractions is that they aren't performant enough, so we've put a lot of effort into making sure that Fearless SIMD never holds you back.”
    — Fearless SIMD developers
    • For context, fearless_simd works by creating implementations of the `Simd` trait for different SIMD levels, and then your function gets invoked as `double_u32s(Avx512, values)` or similar, using a different type for [AVX-512](https://docs.rs/fearless_simd/1.0.0/fearless_simd/struct.Avx512.html) vs…

      refi64release,rust1d ago5▲view on Lobsters ↗
    2 more of the top 3 · 9 posts in this stretch
    • I was checking the docs on Crates.io, and the usage doesn't seem straightforward. 3 things stand out; I'm not a Rust expert, so forgive me if the answers are obvious. The first example has this code: ``` #[simd] fn double_u32s(_: S, values: &mut [u32]) { for value in values { *value = *value * 2; } } ``` Which takes an unused SIMD parameter; what…

      melodyogonnarelease,rust1d ago5▲view on Lobsters ↗
    • Such a type doesn't tell you what SIMD instructions are available on the current machine, just what data widths you want to operate on. fearless_simd does in fact have types like this, albeit they don't make the width a generic parameter because const generics in rust kinda suck at the moment, so the types are `u8x16`, `u16x32` and so on. The…

      dandersonrelease,rust1d ago3▲view on Lobsters ↗
    all of them →
  2. background

    Fearless SIMD eliminates unsafe code through kernel! macro and safe transmute — Unlike other SIMD abstractions containing thousands of unsafe blocks, Fearless SIMD is engineered to avoid ad-hoc unsafe code. It achieves this through the kernel! macro (which invokes most SIMD intrinsics without unsafe by leveraging target feature v1.1) and a safe transmute module inspired by crates like bytemuck and zerocopy. Only two small, self-contained building blocks require safety auditing.

  3. background

    Fearless SIMD reaches v1.0 stable release — After 8 years of development since the original prototype, Fearless SIMD v1.0 launches alongside fearless_simd_macros v0.1. The library offers multiple levels of abstraction for SIMD programming: autovectorization and multiversioning, portable SIMD abstractions, or safe access to intrinsics.

What people are saying 6 voices from 1 site · best of 9 · verbatim