#ocaml #foreign-interface #ffi #smart-pointers #rust

sys ocaml-boxroot-sys

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

6 releases (3 breaking)

new 0.4.0-rc1 Jan 16, 2025
0.3.1 Mar 12, 2024
0.3.0 Feb 9, 2023
0.2.0 Mar 18, 2021
0.1.0 Mar 11, 2021

#174 in Memory management

Download history 12640/week @ 2024-09-27 19313/week @ 2024-10-04 9523/week @ 2024-10-11 11099/week @ 2024-10-18 10900/week @ 2024-10-25 16593/week @ 2024-11-01 13477/week @ 2024-11-08 16930/week @ 2024-11-15 12235/week @ 2024-11-22 17081/week @ 2024-11-29 16593/week @ 2024-12-06 15279/week @ 2024-12-13 11974/week @ 2024-12-20 9263/week @ 2024-12-27 14812/week @ 2025-01-03 17628/week @ 2025-01-10

55,913 downloads per month
Used in 4 crates (2 directly)

MIT license

62KB
1.5K SLoC

C 1K SLoC // 0.2% comments Rust 150 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

~0–305KB