Oxidizing OCaml with Modal Memory Management

Programmers can often improve the performance of their programs by reducing heap allocations: either by allocating on the stack or reusing existing memory in-place. However, without safety guarantees, these optimizations can easily lead to use-after-free errors and even type unsoundness. In this pap...

Full description

Saved in:
Bibliographic Details
Published inProceedings of ACM on programming languages Vol. 8; no. ICFP; pp. 485 - 514
Main Authors Lorenzen, Anton, White, Leo, Dolan, Stephen, Eisenberg, Richard A., Lindley, Sam
Format Journal Article
LanguageEnglish
Published New York, NY, USA ACM 15.08.2024
Subjects
Online AccessGet full text

Cover

Loading…
More Information
Summary:Programmers can often improve the performance of their programs by reducing heap allocations: either by allocating on the stack or reusing existing memory in-place. However, without safety guarantees, these optimizations can easily lead to use-after-free errors and even type unsoundness. In this paper, we present a design based on modes which allows programmers to safely reduce allocations by using stack allocation and in-place updates of immutable structures. We focus on three mode axes: affinity, uniqueness and locality. Modes are fully backwards compatible with existing OCaml code and can be completely inferred. Our work makes manual memory management in OCaml safe and convenient and charts a path towards bringing the benefits of Rust to OCaml.
ISSN:2475-1421
DOI:10.1145/3674642