PackageTrack
Sign in Get early access

nalgebra

General-purpose linear algebra library with transformations and statically-sized or dynamically-sized matrices.

0.35.0 85M downloads/mo #892 most downloaded on crates.io dimforge/nalgebra

What this package is like to depend on

Last release 3 months ago

24 May 2026

Release timing varies

gaps range from 2 weeks to 9 months

Rarely documented

notes for 20 of 118 stable releases

6 versions withdrawn

withdrawn after publishing

12 years old

124 releases · first in 2014

4 releases in the last 12 months

see the full history below

Release timeline

124 releases · Nov 2014 to May 2026
2015 2017 2019 2021 2023 2025
Release Pre-release Withdrawn

Releases

latest 60 of 124
  1. 0.35.0 24 May 2026
    Release notes

    Release nalgebra-glm, -lapack, and -sparse

    Open source →
    Release notes

    Added

    • Add the Bunch–Kaufman LDL decomposition (LBLT) via the new Matrix::lblt method #1591.
    • Add OneNorm and the Matrix::one_norm method computing the induced matrix 1-norm (maximum absolute column sum) #1591.
    • Add the convert-glam033 feature to enable conversion from/to types from glam v0.33.

    Changed

    • Bumped MSRV to 1.89.0.
    • Updated simba dependency to 0.10.
    • Updated rand dependency to 0.10 and rand_distr to 0.6.
    • Removed the convert-glamXXX features for all glam versions prior to 0.30 #1598.
    • Clarified norm documentation: EuclideanNorm is the Frobenius norm for matrices, LpNorm/UniformNorm are entrywise, not induced matrix norms #1591.
    • nalgebra-lapack: updated thiserror to 2.0.

    Fixed

    • Fix the T: Sync bound on impl Send for ViewStorage so view storages can be sent across threads when T: Send #1581.
    Open source →
  2. 0.34.2 28 Mar 2026
    Release notes

    Added

    • Add convert-glam031 and convert-glam032 features for conversion from/to glam v0.31 and v0.32 #1597.

    Fixed

    • Fix SymmetricEigen routine #1210.
    • Fix matrix parsing grammar to accept numbers without leading zeros, e.g. ".45" #1578.
    • Fix build with glam in no_std environments #1555.
    • Fix rustdoc warnings #1511.
    • Implement absolute threshold for early deflation in Schur algorithm #1565.
    • Assert matrix shapes for Matrix::abs_diff_eq #1568.
    Open source →
  3. 0.34.1 20 Sep 2025
    Release notes

    Release v0.34.1 (#1546)

    Open source →
    Release notes

    Added

    • Added encase feature, providing encase trait implementations for nalgebra types.
    Open source →
  4. 0.34.0 31 Jul 2025
    Release notes

    Added

    • Add the convert-glam030 feature to enable conversion from/to types from glam v0.30.
    • Add the defmt cargo feature that enables derives of defmt::Format for all no-std types.

    Changed

    • Bumped MSRV to 1.87.0.
    • Updated rand dependency to 0.9.0.
    • Renamed associated const DimName::USIZE to DimName::DIM.
    • Moved to Rust 2024 edition.
    • Several methods are now const whenever possible. See details in #1522.
    • Features for conversion from/to types from glam (such as convert-glam029) no longer enable default features for glam, allowing use in no_std environments.

    Fixed

    • Fix infinite loop when attempting to take the Schur decomposition of a 0 matrix.
    Open source →
  5. 0.33.3 28 Mar 2026
    Release notes

    Co-authored-by: Willow Black [email protected]

    Open source →
  6. 0.33.2 29 Oct 2024
    Release notes

    Release v0.33.2 (#1457)

    Open source →
    Release notes

    Added

    • Add the convert-glam029 feature to enable conversion from/to types from glam v0.29.
    Open source →
  7. 0.33.1 16 Oct 2024
    Release notes

    Added

    • Add implementations of bytemuck traits for isometries and similarities.
    • Implement AsRef<[T]> for matrices with contiguous storage.
    • Enable the num-complex/bytemuck feature when the convert-bytemuck feature is enabled.
    Open source →
  8. 0.33.0 23 Jun 2024
    Release notes

    Fixed

    • Fix a memory leak in Matrix::generic_resize.
    • Fix glm::is_null to check the vector magnitude instead of individual components.
    • Ensure that inverting a 4x4 matrix leaves it unchanged if the inversion fails.

    Added

    • Add the glam-0.28 feature to enable conversion from/to types from glam v0.28.
    • Add a stack! macro for concatenating matrices. See #1375.

    Modified

    • The cuda feature has been removed, as the toolchain it depends on is long abandoned.
    • Update to simba 0.9. See the changelog of simba for details.
    • Update the nalgebra-macros crate to syn 2.0.
    • Remove the scalar type T from the Allocator trait parameters. Instead of Allocator<T, R, C>, use the simpler Allocator<R, C>.
    Open source →
  9. 0.32.6 12 Jun 2024
    Release notes

    Added

    • Add the glam-0.27 feature to enable conversion from/to types from glam v0.27.
    Open source →
  10. 0.32.5 28 Mar 2024

    Nothing published for this version

  11. 0.32.4 19 Feb 2024
    Release notes

    Added

    • Add the glam-0.25 feature to enable conversion from/to types from glam v0.25.
    Open source →
  12. 0.32.3 09 Jul 2023
    Release notes

    Modified

    • Statically sized matrices are now serialized as tuples to match how serde serialized plain arrays.
    • Don’t require Scalar for matrix PartialEq and Eq.

    Added

    • Allow trailing punctuation in macros vector!, matrix!, point!, etc.
    • Add the methods Matrix1::as_scalar, ::as_scalar_mut, ::to_scalar, ::into_scalar.
    • Add Rotation3::euler_angles_ordered, a generalized euler angles calculation.
    • Add the glam-0.24 feature to enable conversion from/to types from glam v0.24.
    • Add the glam-0.25 feature to enable conversion from/to types from glam v0.25.
    • Add the lerp method to points.
    • Implement Clone for MatrixIter.

    Fixed

    • Fixed severe catastrophic cancellation issue in variance calculation.
    Open source →
  13. 0.32.2 07 Mar 2023
    Release notes

    Added

    • Add the glam-0.23 to enable conversion from/to type from glam v0.23.
    Open source →
  14. 0.32.1 14 Jan 2023
    Release notes

    Modified

    • Updated nalgebra-macros to use the new Dyn, avoiding macro-generated deprecation warnings.
    Open source →
  15. 0.32.0 14 Jan 2023 withdrawn
    Release notes

    Modified

    • Renamed all MatrixSlice types to MatrixView. In general all occurrences of the world Slice or slice have been replaced by View or view.
    • Deprecated all the types involving Slice in its name, in favor of the word View.
    • Make it so that most nalgebra objects archive as themselves (when using rkyv for serialization).
    • Renamed Dynamic to Dyn and make Dyn a tuple struct.

    Added

    • Add Cholesky::ln_determinant to compute the natural logarithm of the determinant of a matrix decomposed with Cholesky. This can be more numerically stable than computing the determinant itself when very small and/or large values are involved.
    • Added new methods Matrix::as_view and Matrix::as_view_mut, which are very useful when working with view-based APIs.
    • Added parallel column iterator using rayon: Matrix::par_column_iter and Matrix::par_column_iter_mut. The rayon feature must be enabled to access these methods.
    • Implement ReshapableStorage for matrix slices (only for unit strides at the moment).
    • Add U0, U1, … constants alongside the U0, U1, … types. This lets us write U4 instead of U4::name() or Const::<4> when we need const dimensions.

    Fixed

    • Fixed the implementation of Rotation3::euler_angles to return the angles in the documented order (roll, pitch, yaw).
    Open source →
  16. 0.31.4 13 Nov 2022
    Release notes

    Added

    • Add a convert-glam022 feature to enable conversion between nalgebra and glam v0.22.
    Open source →
  17. 0.31.3 30 Oct 2022
    Release notes

    Added

    • Add Matrix::try_cast to attempt casting the inner scalar types when that cast may fail.

    Fixed

    • Fixed the usage of CheckBytes with rkyv.
    Open source →
  18. 0.31.2 09 Oct 2022
    Release notes

    Modified

    • Use #[inline] on the Dim implementation for Const to improve opt-level 1 performance.
    • Make the Point::new constructions const-fn.

    Added

    • Add UnitVector::cast to change the underlying scalar type.
    Open source →
  19. 0.31.1 31 Jul 2022
    Release notes

    Modified

    • Improve performances of multiplication of two sparse matrices.

    Added

    • Add Matrix::from_row_iterator to build a matrix from an iterator yielding components in row-major order.
    • Add support for conversion from/to types of glam 0.21.
    • nalgebra-sparse: add support for the matrix-market export of sparse matrices.
    • nalgebra-lapack: add a GE for solving the generalized eigenvalues problem.

    Fixed

    • Fix Rotation3::from_matrix and UnitQuaternion::from_matrix when the input matrix is already a valid rotation matrix.
    Open source →
  20. 0.31.0 30 Apr 2022
    Release notes

    Breaking changes

    • Switch to cust 0.3 (for CUDA support).
    • Switch to rkyv 0.7
    • Remove support for serialization based on abomonation.
    • Remove support for conversions between nalgebra types and glam 0.13.

    Modified

    • The aliases for Const types have been simplified to help rust-analyzer.

    Added

    • Add TryFrom conversion between UnitVector2/3/4 and glam’s Vec2/3/4.
    • nalgebra-sparse: added support for serialization of sparse matrices with serde.
    • nalgebra-sparse: add a CSC matrix constructor from unsorted (but valid) data.
    • nalgebra-lapack: add generalized eigenvalues/eigenvectors calculation + QZ decomposition.

    Fixed

    • Improve stability of SVD.
    • Fix slerp for UnitComplex.
    Open source →
  21. 0.30.1 09 Jan 2022
    Release notes

    Added

    • Add conversion from/to types of glam 0.19 and 0.20.
    Open source →
  22. 0.30.0 02 Jan 2022
    Release notes

    Breaking changes

    • The Dim trait is now marked as unsafe.
    • The Matrix::pow and Matrix::pow_mut methods only allow positive integer exponents now. To compute negative exponents, the user is free to invert the matrix before calling pow with the exponent’s absolute value.
    • Remove the Bounded requirement from RealField. Replace it by methods returning Option<Self> so that they can still be implemented by unbounded types (by returning None).
    • The ComplexField trait derives from FromPrimitive again. We can actually keep this because all its methods return Option<Self>, meaning that it could be implemented by any type.

    Modified

    • Use more concise debug impls for matrices and geometric transformation types.
    • The singular values computed by the SVD are now sorted in increasing order by default. Use SVD::new_unordered instead to reproduce the older behavior without the sorting overhead.
    • The UnitDualQuaternion::sclerp method will no longer panic when given two equal rotations.
    • The Matrix::select_rows and Matrix::select_columns methods no longer require the matrix components to implement the trait Zero.
    • The Matrix::pow and Matrix::pow_mut methods will now also work with integer matrices.

    Added

    • Added the conversion trait From<Vec<T>> and method from_vec_storage for RowDVector.
    • Added implementation of From and Into for converting between nalgebra types and types from glam 0.18. These can be enabled by enabling the convert-glam018 cargo features.
    • Added the methods Matrix::product, ::row_product, ::row_product_tr, and ::column_product to compute the product of the components, rows, or columns, of a single matrix or vector.
    • The Default trait is now implemented for most geometric types: Point, Isometry, Rotation, Similarity, Transform, UnitComplex, and UnitQuaternion.
    • Added the Scale geometric type for representing non-uniform scaling.
    • Added Cholesky::new_with_substitute that will replace diagonal elements by a given constant whenever Cholesky meets a non-definite-positiveness.
    • Re-added the conversion from a vector/matrix slice to a static array.
    • Added the cuda feature that enables the support of rust-cuda for using nalgebra features with CUDA kernels written in Rust.
    • Added special-cases implementations for the 2x2 and 3x3 SVDs for better accuracy and performances.
    • Added the methods Matrix::polar, Matrix::try_polar, and SVD::to_polar to compute the polar decomposition of a matrix, based on its SVD.
    • nalgebra-sparse: provide constructors for unsorted but otherwise valid data using the CSR format.
    • nalgebra-sparse: added reading MatrixMarked data files to a sparse CooMatrix.

    Fixed

    • Fixed a potential unsoundness with matrix.get(i) and matrix.get_mut(i) where i is an usize, and matrix is a matrix slice with non-default strides.
    • Fixed potential unsoundness with vector.perp where vector isn’t actually a 2D vector as expected.
    • Fixed linkage issue with nalgebra-lapack: the user of nalgebra-lapack no longer have to add extern crate lapack-src to their main.rs.
    • Fixed the no-std build of nalgebra-glm.
    • Fix the pow and pow_mut functions (the result was incorrect for some exponent values).
    Open source →
  23. 0.29.0 08 Aug 2021

    Nothing published for this version

  24. 0.28.0 11 Jul 2021

    Nothing published for this version

  25. 0.27.1 04 Jun 2021

    Nothing published for this version

  26. 0.27.0 02 Jun 2021 withdrawn

    Nothing published for this version

  27. 0.26.2 27 Apr 2021

    Nothing published for this version

  28. 0.26.1 12 Apr 2021

    Nothing published for this version

  29. 0.26.0 12 Apr 2021 withdrawn

    Nothing published for this version

  30. 0.25.4 01 Apr 2021

    Nothing published for this version

  31. 0.25.3 07 Mar 2021

    Nothing published for this version

  32. 0.25.2 06 Mar 2021

    Nothing published for this version

  33. 0.25.1 02 Mar 2021

    Nothing published for this version

  34. 0.25.0 01 Mar 2021 withdrawn
    Release notes

    This updates all the dependencies of nalgebra to their latest version, including:

    • rand 0.8
    • proptest 1.0
    • simba 0.4

    New crate: nalgebra-sparse

    Alongside this release of nalgebra, we are releasing nalgebra-sparse: a crate dedicated to sparse matrix computation with nalgebra. The sparse module of nalgebraitself still exists for backward compatibility, but it will be deprecated soon in favor of the nalgebra-sparse crate.

    Added

    • Add UnitDualQuaternion, a dual-quaternion with unit magnitude which can be used as an isometry transformation.
    • Add UDU::new() and matrix.udu() to compute the UDU factorization of a matrix.
    • Add ColPivQR::new() and matrix.col_piv_qr() to compute the QR decomposition with column pivoting of a matrix.
    • Add from_basis_unchecked to all the rotation types. This builds a rotation from a set of basis vectors (representing the columns of the corresponding rotation matrix).
    • Add Matrix::cap_magnitude to cap the magnitude of a vector.
    • Add UnitQuaternion::append_axisangle_linearized to approximately append a rotation represented as an axis-angle to a rotation represented as an unit quaternion.
    • Mark the iterators on matrix components as DoubleEndedIter.
    • Re-export simba::simd::SimdValue at the root of the nalgebra crate.
    Open source →
  35. 0.24.1 29 Jan 2021

    Nothing published for this version

  36. 0.24.0 30 Dec 2020

    Nothing published for this version

  37. 0.23.2 18 Dec 2020

    Nothing published for this version

  38. 0.23.1 19 Nov 2020

    Nothing published for this version

  39. 0.23.0 26 Oct 2020

    Nothing published for this version

  40. 0.22.1 13 Oct 2020

    Nothing published for this version

  41. 0.22.0 25 Aug 2020

    Nothing published for this version

  42. 0.21.1 07 Jun 2020

    Nothing published for this version

  43. 0.21.0 05 Apr 2020

    Nothing published for this version

  44. 0.20.0 02 Mar 2020

    Nothing published for this version

  45. 0.19.0 28 Oct 2019

    Nothing published for this version

  46. 0.18.1 27 Aug 2019

    Nothing published for this version

  47. 0.18.0 31 Mar 2019

    Nothing published for this version

  48. 0.17.3 18 Mar 2019

    Nothing published for this version

  49. 0.17.2 18 Feb 2019

    Nothing published for this version

  50. 0.17.1 17 Feb 2019

    Nothing published for this version

  51. 0.17.0 03 Feb 2019

    Nothing published for this version

  52. 0.16.14 08 Sep 2019

    Nothing published for this version

  53. 0.16.13 29 Dec 2018

    Nothing published for this version

  54. 0.16.12 04 Dec 2018

    Nothing published for this version

  55. 0.16.11 23 Nov 2018

    Nothing published for this version

  56. 0.16.10 10 Nov 2018

    Nothing published for this version

  57. 0.16.9 08 Nov 2018

    Nothing published for this version

  58. 0.16.8 01 Nov 2018

    Nothing published for this version

  59. 0.16.7 30 Oct 2018

    Nothing published for this version

  60. 0.16.6 27 Oct 2018

    Nothing published for this version

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive