A few months ago I released the first version of jlrs, a crate (library) for the Rust programming language that provides bindings to he Julia C API. I’ve continued working on it and recently version 0.5 has been released. A lot has changed since the earliest version. That version used many indirections to provide basic functionality, and over the releases jlrs has been rewritten in a way that (I think) offers an API that is comfortable to people who are familiar with Rust, expressed in a way that’s close to the Julia C API.
The major features that jlrs currently offers are:
- Access arbitrary Julia modules and their contents.
- Call arbitrary Julia functions.
- Include and use your own Julia code (including support for custom sytem images).
- Create values that Julia can use, and convert them back to Rust, from Rust.
- Access the type information and fields of values and check their properties.
- Support for mapping isbits tuples and structs to Rust structs.
- Create and use n-dimensional arrays.
Both Windows and Linux are supported, you can find build instructions on Github and in the docs.