# \[ANN\] jlrs v0.7: write functions in Rust and call them from Julia, execute multiple tasks in parallel, use Julia arrays with ndarray

**URL:** https://discourse.julialang.org/t/ann-jlrs-v0-7-write-functions-in-rust-and-call-them-from-julia-execute-multiple-tasks-in-parallel-use-julia-arrays-with-ndarray/48287
**Category:** Package Announcements
**Tags:** rust
**Created:** [October 13, 2020, 10:15am UTC](https://discourse.julialang.org/t/ann-jlrs-v0-7-write-functions-in-rust-and-call-them-from-julia-execute-multiple-tasks-in-parallel-use-julia-arrays-with-ndarray/48287 "2020-10-13T10:15:22Z")
**Posts on this page:** 1
**Page:** 1

<div class="post-metadata">

### Author: ![Taaitaaiger](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/taaitaaiger/32/49792_2.png) [@Taaitaaiger](https://discourse.julialang.org/u/Taaitaaiger)
#### Post date: [October 13, 2020, 10:15am UTC](https://discourse.julialang.org/t/ann-jlrs-v0-7-write-functions-in-rust-and-call-them-from-julia-execute-multiple-tasks-in-parallel-use-julia-arrays-with-ndarray/48287/1 "2020-10-13T10:15:22Z")

</div>

Last Saturday I released jlrs v0.7 which has two major new features.

First of all, you can now use functionality from jlrs when writing Rust code that is called from Julia using its `ccall` interface. This function can call arbitrary functions defined in dynamic libraries that use the C ABI (ie functions marked with `extern "C"`, and possibly `#[no_mangle]` in Rust). While this can be achieved without using jlrs, it’s now possible to use features from jlrs such as borrowing array data.

The second major feature is the introduction of an (experimental) async runtime. This feature is highly experimental and only works on Linux. With the async runtime you can use `Value::call_async` to offload a function call to another thread (using `Base.Threads.@spawn`) and wait for the result; while the computation is running the runtime is free to work on other tasks. This feature is experimental because it’s the first async code I’ve ever written and depends on some unstable features.

Additionally, some small features have been added. The biggest one of these is that there’s a new arrya type, `TypedArray`, which is highly similar to `Array` except that the type of the elements is explicitly known. The crate `jlrs-ndarray` is now available to easily borrow array data from Julia as an `ArrayView(Mut)` from ndarray.

The repository now contains several examples, so if you’re curious how to use these new features you can take a look [here](https://github.com/Taaitaaiger/jlrs/tree/master/examples).

[Github](https://github.com/Taaitaaiger/jlrs)

[Docs.rs](https://docs.rs/jlrs/0.7.0/jlrs/index.html)

[Crates.io](https://crates.io/crates/jlrs)
