Migration from v0.17 to v0.18

faer v0.18 comes with a refactor of the code base into a more scalable form and to better improve the user experience with the docs.rs documentation. The changes affect mostly the low level APIs. These include:

  • Merging faer-core, faer-cholesky, faer-lu, faer-qr, faer-svd, faer-evd, faer-sparse into faer. Those crates are now deprecated and will no longer be updated, so switching to depending on faer directly is recommended.
  • Low level matrix multiplication moved from faer_core::mul to faer::linalg::matmul.
  • Low level triangular matrix solve moved from faer_core::solve to faer::linalg::triangular_solve.
  • Low level triangular matrix inverse moved from faer_core::inverse to faer::linalg::triangular_inverse.
  • Low level Cholesky implementation moved from faer_cholesky to faer::linalg::cholesky.
  • Sparse API moved from faer_core::sparse to faer::sparse.
  • Low level LU implementation moved from faer_lu to faer::linalg::lu.
  • Low level QR implementation moved from faer_qr to faer::linalg::qr.
  • Low level SVD implementation moved from faer_svd to faer::linalg::svd.
  • Low level EVD implementation moved from faer_evd to faer::linalg::evd.
  • Low level sparse decompositions moved from faer_sparse to faer::sparse::linalg.
  • High level dense solvers moved from faer::solvers to faer::linalg::solvers.
  • High level sparse solvers moved from faer::sparse::solvers to faer::sparse::linalg::solvers.

For an easier transition, deprecated aliases were placed in faer::modules::{core,cholesky,lu,qr,svd,evd,sparse} that emulate the corresponding old versions of the low level crates to some extent, but they will be removed in a future version.