#ocaml #ffi #smart-pointers #rust

sys ocaml-boxroot-sys

Boxroot for OCaml: fast movable GC roots (C API)

5 unstable releases

0.3.1 Mar 12, 2024
0.3.0 Feb 9, 2023
0.3.0-rc.1 Feb 3, 2023
0.2.0 Mar 18, 2021
0.1.0 Mar 11, 2021

#180 in Memory management

Download history 8626/week @ 2023-12-18 3063/week @ 2023-12-25 4162/week @ 2024-01-01 6552/week @ 2024-01-08 5056/week @ 2024-01-15 4809/week @ 2024-01-22 6260/week @ 2024-01-29 3131/week @ 2024-02-05 3456/week @ 2024-02-12 3096/week @ 2024-02-19 3277/week @ 2024-02-26 3195/week @ 2024-03-04 3323/week @ 2024-03-11 3051/week @ 2024-03-18 4170/week @ 2024-03-25 3779/week @ 2024-04-01

14,504 downloads per month
Used in 4 crates (2 directly)

MIT license

53KB
1K SLoC

C 1K SLoC // 0.2% comments Rust 148 SLoC // 0.1% comments

Boxroot for OCaml: fast movable GC roots

This library extends the OCaml foreign function interface with an efficient and flexible GC rooting mechanism. See https://gitlab.com/ocaml-rust/ocaml-boxroot/.

This crate exposes the raw functionality of the Boxroot library as unsafe Rust functions. It is meant to be used by low-level libraries to expose GC roots for the OCaml GC as smart pointers in Rust (see the crate ocaml-interop).

Running tests

The link-ocaml-runtime-and-dummy-program feature needs to be enabled when running tests:

cargo test --features "link-ocaml-runtime-and-dummy-program"

Feature flags

bundle-boxroot

If this feature flag is not enabled (by default it is enabled), the compilation of the C code that implements boxroot will be skipped, and the user is responsible of linking boxroot into the final binary.

When this feature flag is enabled, the OCaml headers must be available to be able to compile the boxroot C code.


lib.rs:

The documentation of the functions can be found inside boxroot/boxroot.h (including rules for safe usage)

Dependencies

~175KB