All Versions
51
Latest Version
Avg Release Cycle
70 days
Latest Release
113 days ago

Changelog History
Page 1

  • v0.31.2 Changes

    October 09, 2022

    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.
  • v0.31.1 Changes

    July 31, 2022

    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.
  • v0.31.0 Changes

    April 30, 2022

    πŸ’₯ 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.
  • v0.30.1 Changes

    January 09, 2022

    βž• Added

    • βž• Add conversion from/to types of glam 0.19 and 0.20.
  • v0.30.0 Changes

    January 02, 2022

    πŸ’₯ 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.
    • 0️⃣ 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.
    • 0️⃣ 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).
  • v0.29.1 Changes

    βž• Added

    • The conversion trait From<Vec<T>> and method from_vec_storage for RowDVector. See #975
    • βž• 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.
    • 0️⃣ The Default trait is now implemented for most geometric types: Point, Isometry, Rotation, Similarity, Transform, UnitComplex, and UnitQuaternion.
  • v0.29.0 Changes

    πŸ’₯ Breaking changes

    • ⚑️ We updated to the version 0.6 of simba. This means that the trait bounds T: na::RealField, na::ComplexField, na::SimdRealField, na:SimdComplexField no imply that T: Copy (they only imply that T: Clone). This may affect generic code.
    • The closure given to apply, zip_apply, zip_zip_apply must now modify the first argument inplace, instead of returning a new value. This makes these methods more versatile, and avoid useless clones when using non-Copy scalar types.
    • The Allocator trait signature has been significantly modified in order to handle uninitialized matrices in a sound way.

    Modified

    • Orthographic3::from_matrix_unchecked is now const fn.
    • Perspective3::from_matrix_unchecked is now const fn.
    • Rotation::from_matrix_unchecked is now const fn.
    • πŸ‘― The Scalar is now automatically implemented for most 'static + Clone types. Type that implement Clone but not Copy are now much safer to work with thanks to the refactoring of the Allocator system.

    βž• Added

    • The conversion traits form the bytemuck crates are now implemented for the geometric types too.
    • Added operator overloading for Transform * UnitComplex, UnitComplex * Transform, Transform Γ—= UnitComplex, Transform Γ·= UnitComplex.
    • βž• Added Reflection::bias() to retrieve the bias of the reflection.
    • βž• Added Reflection1..Reflection6 aliases for 1D to 6D reflections.
    • βž• Added implementation of From and Into for converting between nalgebra types and types from glam 0.16 and glam 0.17. These can be enabled by enabling the convert-glam016, and/or convert-glam017 cargo features.
  • v0.28.0 Changes

    βž• Added

    • Implement Hash for Transform.
    • Implement Borrow and BorrowMut for contiguous slices.

    Modified

    • The OPoint<T, D> type has been added. It takes the dimension number as a type-level integer (e.g. Const<3>) instead of a const-generic. The type Point<T, const D: usize> is now an alias for OPoint. This changes doesn't affect any of the existing code using Point. However, it will allow the use OPoint in a generic context where the dimension cannot be easily expressed as a const-generic (because of the current limitation of const-generics in Rust).
    • ⚠ Several clippy warnings were fixed. This results in some method signature changes (e.g. taking self instead of &self) but this should not have any practical infulances on existing codebase.
    • The Point::new constructors are no longer const-fn. This is due to some limitations in const-fn not allowing custom trait-bounds. Use the point! macro instead to build points in const environments.
    • Dynamic::new and Unit::new_unchecked are now const-fn.
    • Methods returning Result<(), ()> now return bool instead.

    πŸ›  Fixed

    • πŸ›  Fixed a potential unsoundess issue when converting a mutable slice to a &mut[T].
  • v0.27.1 Changes

    πŸ›  Fixed

    • πŸ›  Fixed a bug in the conversion from glam::Vec2 or glam::DVec2 to Isometry2.
  • v0.27.0 Changes

    🚚 This removes the convert-glam and convert-glam-unchecked optional features. Instead, this adds the convert-glam013, convert-glam014, and convert-glam015 optional features for conversions targeting the versions 0.13, 0.14, and 0.15 of glam.

    βž• Added

    • βž• Add macros matrix!, dmatrix!, vector!, dvector!, point! for constructing matrices/vectors/points in a more convenient way. See #886 and #899.
    • βž• Add CooMatrix::reserve to nalgebra-sparse.
    • βž• Add basic support for serialization using rkyv. Can be enabled with the features rkyv-serialize or rkyv-serialize-no-std.

    πŸ›  Fixed

    • πŸ›  Fixed a potential unsoundness issue after deserializing an invalid DVector using serde.