simba
SIMD algebra for Rust
0.10.2
71M downloads/mo
#986 most downloaded on crates.io
dimforge/simba
What this package is like to depend on
Last release 16 days ago
07 Aug 2026
Release timing varies
gaps range from 4 weeks to 1.2 years
Most releases are documented
notes for 17 of 23 stable releases
5 versions withdrawn
withdrawn after publishing
6 years old
28 releases · first in 2020
4 releases in the last 12 months
see the full history below
Release timeline
28 releases · Mar 2020 to Aug 2026Releases
latest 28-
0.10.207 Aug 2026 -
0.10.102 Aug 2026Release notes
Open source →- Bump the minimum
wideversion to 1.6, and switch from the deprecatedblend/Cmp*APIs toselectand the inherentsimd_*comparison methods. - The
WideF32xX/WideF64xXmath functions now go throughComplexField/RealFieldinstead of the inherentstdmethods, so they honor thelibm_forcefeature. Underlibm_force,simd_sin,simd_cosandsimd_sin_cosare computed per-lane withlibminstead ofwide's SIMD polynomials. SimdValue::splatfor the wide types no longer emits amemset_pattern16libc call.
- Bump the minimum
-
0.10.024 May 2026Release notes
Open source →- Update the
randdependency to 0.10 (from 0.8). As a side-effect, theDistribution<T> for StandardUniformimplementations for SIMD types containingisize/usizenow generate random values viafill_bytes(), becauserand0.9 removed the uniform distribution forisize/usize. See #76. - Update the
widedependency to 1.0 (from 0.7). See #78. - Add the
f32x1,f64x1,i*x1,u*x1,m*x1type aliases (and the corresponding trait implementations) when theportable_simdfeature is enabled. See #67. - Fix build with the
portable_simdfeature on recentnightly(adapt toMask::from_int/to_intbeing renamed tofrom_simd/to_simd). See #79. - Drop the
pastebuild-time dependency; the macro-generatedComplexField/SimdComplexFieldmethod declarations are now written out explicitly. See #71.
- Update the
-
0.9.105 Sep 2025Release notes
Open source →-
feat: make more wide from/to array functions public
-
feat: use simd versions of more wide operations
-
feat: add some missing inlines
-
Release v0.9.1
-
fix no-std ci
Release notes
Open source →into_arr,from_arr,map,zip_mapare now public onWideF32x4,WideF32x8andWideF64x4.from_arrandinto_arrare now public onWideBoolF32x4,WideBoolF32x8,WideBoolF64x4.- Use SIMD implementations of
WideBool*methodsall,any, andnone. - Inline more
AutoSimdmethods.
-
-
0.9.022 Jun 2024Release notes
Open source →- The
cudafeature has been removed, as the toolchain it depends on is long abandoned. - The
packed_simdfeature has been removes as it has been incompatible with thenightlycompiler for several months. Consider using theportable_simdfeature instead. - Add the
portable_simdfeature for supportingstd::simd. - The
ClosedAdd, ClosedMul, etc.traits no longer requireAddAssign, MulAssign. Instead they are required for new traits namedClosedAddAssign, ClosedMulAssign, etc. - The
ComplexFieldandSimdComplexField(and, by extension,RealFieldandSimdRealField) traits now depend on theSupersetOf<f32>trait in addition toSupersetOf<f64>. - Replace the
SimdValue::lanes()function by an associated constantSimdValue::LANES. - Add
ZEROandONEassociated consts to all the simd newtypes. - Implement
Defaultfor all simd newtypes.
- The
-
0.8.107 Apr 2023Release notes
Open source →- Add implementation of
rkyvserialization/deserialization to theWide*wrapper types.
- Add implementation of
-
0.8.014 Jan 2023Release notes
Open source →- When
rkyvsupport is enabled, the archived version ofAutoSimdandAutoBoolSimdare themselves. TheArchivedAutoSimdandArchivedAutoBoolSimdtypes are no longer generated.
- When
-
0.7.330 Oct 2022Release notes
Open source →- Cuda: implement DeviceCopy for AutoSimd
- Implement
Distribution(for random number generation) for SIMD types.
-
0.7.230 Jul 2022Release notes
Open source →- Add the optional types
WideF64x4andWideBoolF64x4for 4-lanes SIMD 64-bits float operations based on thewidecrate. - Add the
rkyv-serializefeature to enablerkyvserialization/deserialization of theAutoSimdtypes. - Fix build with only the
libmfeature enabled.
- Add the optional types
-
0.7.127 Jan 2022Release notes
Open source →- Add the optional types
WideF32x8andWideBoolF32x8for 8-lanes SIMD float operations.
- Add the optional types
-
0.7.002 Jan 2022Release notes
Open source →- Remove the
Boundedrequirement fromRealField. Replace it by methods returningOption<Self>so that they can still be implemented by unbounded types (by returningNone). - The
ComplexFieldtrait derives fromFromPrimitiveagain. We can actually keep this because all its methods returnOption<Self>, meaning that it could be implemented by any type. - Add the
cudacargo feature that enables support for Rust-Cuda by generating the relevant cuda intrinsics for float operations when running on a cuda kernel.
- Remove the
-
0.6.008 Aug 2021Release notes
Open source →- Replace all the
Copytrait bounds byClone, allowing more types to fulfill the requirements ofComplexFieldandRealField. - The
ComplexFieldtrait no longer derive fromFromPrimitive.
- Replace all the
-
0.5.102 Jun 2021Nothing published for this version
-
0.5.002 Jun 2021 withdrawn -
0.4.026 Feb 2021Release notes
Open source →- Update the
rand0.8 dependency. - Add
SimdComplexField::simd_horizontal_sumandSimdComplexField::simd_horizontal_productfor computing the sum or product of all the lanes of a single SIMD value.
- Update the
-
0.3.125 Oct 2020Nothing published for this version
-
0.3.024 Oct 2020 withdrawnRelease notes
Open source →This release includes a change that is not technically a breaking change because it won't cause existing code to not compile anymore. However it is an important semantic change to justify a major release:
- The arguments of
copysignare now swapped:a.copysign(b)will copy the sign ofbintoa(the previous behavior copied the sign ofaintob). This change was needed to align with the argument order used by the standard library, thus avoiding hard-to-debug errors due to mismatching conventions. - The arguments of
simd_copysignare now swapped too.
This release also update the
num-complexdependency to its latest version 0.3. - The arguments of
-
0.2.420 Oct 2020Release notes
Open source →- Make
Fixed.to_bitsandFixed::from_bitsconst-fn. - Make our
Fixedwrapper typerepr(transparent).
- Make
-
0.2.319 Oct 2020Release notes
Open source →- Add
.to_bitsto our fixed-point number newtype. - Add
::from_bitsto our fixed-point number newtype. - Add
Ordimplementation for our fixed-point number newtype. - Add
Mul<int>, Div<int>, Rem<int>, MulAssign<int>, DivAssign<int>, RemAssign<int>implementation for our fixed-point number newtype, whereintis the underlying integer used by the fixed-point number.
- Add
-
0.2.219 Oct 2020Release notes
Open source →- Fix a compilation error when building simba with out
stdand with thelibmfeature.
- Fix a compilation error when building simba with out
-
0.2.106 Oct 2020 withdrawnRelease notes
Open source →- Add SIMD types named, e.g.
AutoF32x4, based on auto-vectorization only. They don't call any SIMD intrinsics and let the compiler do the vectorization, if it can.
- Add SIMD types named, e.g.
-
0.2.025 Aug 2020Release notes
Open source →- The use of
libmin#[no-std]environments is now opt-in by enabling thelibmfeature. - If the
libmis not enabled in a#[no-std]environment, then noRealFieldorComplexFieldimpls will be provided for floats. - Add the
libm_forcecargo feature that forces the use oflibm, even when we don't targetno-std. - Add
copysignto copy the sign from one number to another. - Add
simd_horizontal_min,simd_horizontal_maxto compute the min/max among the lanes of a single SIMD number. - Wrap all SIMD bools from
packed_simdinto our ownSimd<_>newtype.
- The use of
-
0.1.508 Jun 2020Nothing published for this version
-
0.1.407 Jun 2020 withdrawnNothing published for this version
-
0.1.307 Jun 2020 withdrawnNothing published for this version
-
0.1.205 Apr 2020Nothing published for this version
-
0.1.123 Mar 2020Nothing published for this version
-
0.1.023 Mar 2020Nothing published for this version