rustebra 0.2.0

A hybrid no_std/alloc linear algebra crate for Rust, scaling from embedded targets to dynamic Krylov subspace solvers.
Documentation

Crates.io docs.rs CI License no_std MSRV

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 alloc feature 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

[dependencies]

rustebra = "0.1"



# Optional: heap-backed structures and Krylov solvers

rustebra = { version = "0.1", features = ["alloc"] }

Build and test locally:

# no_std build (default)

cargo build

cargo test


# with alloc feature

cargo build --features alloc

cargo test --features alloc

Documentation

To generate and browse the API docs locally:

cargo doc --open

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.