Skip to content

Latest commit

 

History

History
109 lines (79 loc) · 4.74 KB

File metadata and controls

109 lines (79 loc) · 4.74 KB

Changelog

The latest published Fearless SIMD release is 0.3.0 which was released on 2025-10-14. You can find its changes documented below.

This release has an MSRV of 1.89.

Changed

  • Breaking change: Level::fallback has been removed, replaced with Level::baseline. (#105 by @DJMcNab) This corresponds with a change to avoid compiling in support for the fallback level on compilation targets which don't require it; this is most impactful for binary size on WASM, Apple Silicon Macs or Android. A consequence of this is that the available variants on Level are now dependent on the target features you are compiling with. The fallback level can be restored with the force_support_fallback cargo feature. We don't expect this to be necessary outside of tests.

Removed

  • Breaking change: The (deprecated) simd_dispatch! macro. (#105 by @DJMcNab)

0.3.0 (2025-10-14)

This release has an MSRV of 1.86.

Added

  • SimdBase::witness to fetch the Simd implementation associated with a generic vector. (#76 by @Ralith)
  • Select is now available on native-width masks. (#77, #83 by @Ralith)
  • Simd::shrv_* preforms a right shift with shift amount specified per-lane. (#79 by @Ralith)
  • The >> operator is implemented for SIMD vectors. (#79 by @Ralith)
  • Assignment operator implementations. (#80 by @Ralith)
  • SimdFrom splatting is available on native-width vectors. (#84 by @Ralith)
  • Left shift by u32. (#86 by @Ralith)
  • Unary negation of signed integers. (#91 by @Ralith)
  • A simpler dispatch macro to replace simd_dispatch. (#96, #99 by @Ralith, @DJMcNab)

Fixed

  • Simd now requires consistent mask types for native-width vectors. (#75 by @Ralith)
  • Simd now requires consistent Bytes types for native-width vectors, enabling Bytes::bitcast in generic code. (#81 by @Ralith)
  • Scalar fallback now uses wrapping integer addition. (#85 by @Ralith)

Changed

  • Breaking: a.madd(b, c) and a.msub(b, c) now correspond to a * b + c and a * b - c for consistency with mul_add in std. (#88 by @Ralith) Previously, madd was a + b * c, and msub was a - b * c. Therefore, if you previously had a.madd(b, c), that's now written as b.madd(c, a). And if you had a.msub(b, c), that's now written b.madd(-c, a).
  • Constructors for static SIMD levels are now const (#93 by @Ralith)

0.2.0 (2025-08-26)

There has been a complete rewrite of Fearless SIMD. For some details of the ideas used, see our blog post Towards fearless SIMD, 7 years later.

The repository has also been moved into the Linebender organisation.

0.1.1 (2018-11-05)

No changelog was kept for this release.

0.1.0 (2018-10-19)

This is the initial release. No changelog was kept for this release.