Boxroot, fast movable GC roots for a better FFI
Résumé
We propose a new API and implementation for managing garbage collector (GC) roots for the OCaml foreign-function interface (FFI), which offers:
- better performance than existing APIs (local or global roots);
- efficient support for OCaml 5 with a more multicore-friendly design, with per-domain data structures;
- a reasoning based on resource-management idioms, enabling an easier FFI for Rust.
Our contributions include a C library called Boxroot which is already in use in several OCaml-Rust interfacing libraries.
We believe that this approach generalizes beyond OCaml, to other FFI situations where a language with GC interacts with a language without pervasive GC, especially those that emphasize move semantics for resource handling (typically C++ or Rust); or even to future language explorations in mixing memory management techniques.
Origine | Fichiers produits par l'(les) auteur(s) |
---|