We are developing tenferro-rs, a Rust-native tensor runtime for scientific computing:
It started as the computational core for our own tensor network calculations in physics, but we are now shaping it into a general-purpose library. It currently provides CPU and CUDA backends, eager and traced automatic differentiation, einsum, FFT, and linear algebra.
A key design choice is explicit backend and session management. Execution resources such as CPU thread pools, NUMA domains, GPU devices, streams, memory pools, and backend-specific handles are all explicit, while tensor values themselves stay independent of the execution context.
It is not meant to replace existing Rust array libraries, and we see it as complementary to ML-oriented stacks such as Candle and CubeCL rather than competing with them. For example, ndarray or mdarray storage can be borrowed through strided tensor views, so tenferro can serve purely as the computation layer. We also try to contribute upstream where possible: we are extending CubeCL with complex number support (tracel-ai/cubecl#1300), and some of our changes have already been merged (#1301).
We also rely heavily on AI coding agents in development, and we are experimenting with stricter engineering practices for AI-assisted scientific software: strict repository rules, executable documentation, backend-parity tests, automated correctness checks, and benchmark gates against performance regressions.
The project has grown quite a bit recently, and we would appreciate feedback from people doing scientific computing in Rust, especially on the API, the execution model, interoperability, and performance. Since our own use cases are biased toward tensor networks, we would particularly like to hear about use cases in other fields that the current design does not serve well.