A hybrid no_std/alloc linear algebra library for Rust.
Stack-first by default. Scales to sparse matrices and Krylov subspace solvers when a heap is available.
Documentation · API Reference · Architecture Decisions · Contributing
Status
Early development. The architecture and scope are being defined before implementation; see
docs/adr/ for the decisions made so far. No version has been published yet.
Why this exists
Rust currently lacks a linear algebra library that is simultaneously serious about no_std
support and complete enough to cover sparse matrices and iterative solvers. Existing options
tend to assume a heap is always available, or only provide a partial set of operations for
constrained environments. This project aims to close that gap.
Design principles
- No allocator required by default. The core of the library works entirely on the stack, using const generics to fix sizes at compile time.
- Allocation is opt-in. Dynamic, heap-backed data structures and algorithms are available
behind the
allocfeature flag, for use in environments with an operating system. - Generic over numeric precision. Operations are written to work with different floating-point types, reflecting the range of hardware this library targets — from microcontrollers without double-precision floating-point units to desktop and server systems.
- Explicit error handling. Recoverable failures are reported through
Result, not panics, since an uncontrolled abort is often unacceptable in embedded contexts.
Usage
[]
= "0.1"
# Optional: heap-backed structures and Krylov solvers
= { = "0.1", = ["alloc"] }
Build and test locally:
# no_std build (default)
# with alloc feature
Documentation
- API reference — generated from
cargo doc, hosted on GitHub Pages. - Architecture decisions — records of the key design choices made during development.
- GitHub Pages site — full project documentation.
To generate and browse the API docs locally:
Contributing
Contributions are welcome. Please read CONTRIBUTING.md before opening a pull request.
Contributors
Want to appear here? See CONTRIBUTING.md.
License
Licensed under the Apache License 2.0.