Litcius/Paper detail

Perceus: garbage free reference counting with reuse

Alex Reinking, Ningning Xie, Leonardo de Moura, Daan Leijen

202131 citationsDOIOpen Access PDF

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.

Topics & Concepts

Computer scienceReuseGarbageGarbage collectionFunctional programmingProgramming languageParallel computingState (computer science)Theoretical computer scienceDistributed computingEcologyBiologyLogic, programming, and type systemsParallel Computing and Optimization TechniquesDistributed systems and fault tolerance