Release notes§

This lists the change brought by all major releases. The corresponding source code may be found based on tags on github.

Version 0.13.0§

The nalgebra-lapack crate has been updated. This now includes a broad range matrix decompositions using LAPACK bindings.

This adds support for serialization using the abomonation crate.

Breaking semantic change§



Pure Rust implementation of some Blas operations:

New slicing methods:

Matrix decompositions implemented in pure Rust:

Matrix edition:

Column removal:

Row removal:

Column insertion:

Row insertion:


Version 0.12.0§

The main change of this release is the update of the dependency serde to 1.0.


Version 0.11.0§

The website has been fully rewritten and gives a good overview of all the added/modified features.

This version is a major rewrite of the library. Major changes are:


Lots of features including rectangular matrices, slices, and Serde serialization. Refer to the brand new website for more details. The following free-functions have been added as well:


Componentwise multiplication and division has been replaced by methods:

The following free-functions are now replaced by methods (with the same names) only: ::cross, ::cholesky, ::determinant, ::diagonal, ::eigen_qr (becomes .eig), ::hessenberg, ::qr, ::to_homogeneous, ::to_rotation_matrix, ::transpose, ::shape.

The following free-functions are now replaced by static methods only:

The following free-function are now replaced methods accessible through traits only:


Version 0.10.0§


Binary operations are now allowed between references as well. For example Vector3<f32> + &Vector3<f32> is now possible.


Removed unused parameters to methods from the ApproxEq trait. Those were required before rust 1.0 to help type inference. The are not needed any more since it now allowed to write for a type T that implements ApproxEq: <T as ApproxEq>::approx_epsilon(). This replaces the old form: ApproxEq::approx_epsilon(None::<T>).

Version 0.9.0§



Methods names starting with new_with_ now start with from_. This is more idiomatic in Rust.

The Norm trait now uses an associated type instead of a type parameter. Other similar trait changes are to be expected in the future, e.g., for the Diagonal trait.

Methods marked unsafe for reasons unrelated to memory safety are no longer unsafe. Instead, their name end with _unchecked. In particular:


Still WIP: add implementations of abstract algebra traits from the algebra crate for vectors, rotations and points. To enable them, activate the abstract_algebra feature.

Version 0.8.0§


Almost everything (types, methods, and traits) now use full names instead of abbreviations (e.g. Vec3 becomes Vector3). Most changes are abvious. Note however that: - ::sqnorm becomes ::norm_squared. - ::sqdist becomes ::distance_squared. - ::abs, ::min, etc. did not change as this is a common name for absolute values on, e.g., the libc. - Dynamically sized structures keep the D prefix, e.g., DMat becomes DMatrix.

All files with abbreviated names have been renamed to their full version, e.g., becomes

Version 0.7.0§



Version 0.6.0§

Announcement: a users forum has been created for nalgebra, ncollide, and nphysics. See you there!