Perceus: Garbage Free Reference Counting with Reuse (2020)
6 points by pyfisch
6 points by pyfisch
Abstract: We introduce Perceus, an algorithm for precise reference counting with reuse and specialization. Starting from a functional core language with explicit control-flow, Perceus emits precise reference counting instructions such that (cycle-free) programs are garbage free, where only live references are retained. This enables further optimizations, like reuse analysis that allows for guaranteed in-place updates at runtime. This in turn enables a novel programming paradigm that we call functional but in-place (FBIP). Much like tail-call optimization enables writing loops with regular function calls, reuse analysis enables writing in-place mutating algorithms in a purely functional way. We give a novel formalization of reference counting in a linear resource calculus, and prove that Perceus is sound and garbage free. We show evidence that Perceus, as implemented in Koka, has good performance and is competitive with other state-of-the-art memory collectors.
Keywords: Reference Counting, Algebraic Effects, Handlers
I was wondering whether compilers for functional languages can replace immutable data structures with mutable ones (provided the structure has no other users). The LLM of choice surfaced this paper about the Perceus algorithm and the Koka Programming Language. I find the algorithm described ingenious.
Also look into Roc lang, the early talks discuss using the research for its optimization passes.