Nalgebra 0.11.0 released: new website, rectangular matrices, slicing, and more!

After almost 6 months of work, I am glad to announce the release of nalgebra v0.11.
This is a major rewrite of the library, bringing it closer to what I would like it to be when it will reach v1.0. This is the last modification of nalgebra of this magnitude. The main modifications are:

  • Matrices parametrized by type-level integers. This allows statically-allocated vectors and rectangular matrices of arbitrary shapes. Also, if at some point in the future Rust supports integer literals as type parameter, nalgebra will be easily modifiable to use them instead of type-level integers.
  • More types for transformations, including affine transformations (for non-uniform scaling + rotation + translation) and unit complex numbers (for 2D rotation).
  • The ability to easily create 4x4 matrices for 3D translations, rotations, scalings, and projections. This simplifies the use of nalgebra in the context of computer graphics.

See the changelog and the brand new users guide for more details.

While the interface might sometimes look like Eigen’s (especially the Dynamic type parameter that tells that a matrix is dynamically-sized), we do not have expression templates (and using them is not a priority). Also, blas/lapack/matrixmultiply integration is not done yet but is planed (contributions are welcome !)

If you encounter any difficulty to update existing code, if some features seem to have disappeared after this rewrite, or to understand compilation error messages (which we tried to keep clear despite the use of type-level integers), do not hesitate to open an issue, or to ask on the forum !

Thanks to the developers of typenum and generic-array as my work strongly depend on theirs !