Oxidizing OCaml with modal memory management

Anton Lorenzen, Leo White, Stephen Dolan, Richard A. Eisenberg, Sam Lindley

Research output: Contribution to journalArticlepeer-review

Abstract / Description of output

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.
Original languageEnglish
Article number253
Pages (from-to)485-514
Number of pages30
JournalProceedings of the ACM on Programming Languages
Volume8
Issue numberICFP
DOIs
Publication statusPublished - 15 Aug 2024

Keywords / Materials (for Non-textual outputs)

  • modal types
  • stack allocation
  • type qualifiers
  • uniqueness types

Fingerprint

Dive into the research topics of 'Oxidizing OCaml with modal memory management'. Together they form a unique fingerprint.

Cite this