Free to Move: Reachability Types with Flow-Sensitive Effects for Safe Deallocation and Ownership Transfer
By: Haotian Deng , Siyuan He , Songlin Jia and more
Potential Business Impact:
Keeps computer programs from crashing by tracking memory.
We present a flow-sensitive effect system for reachability types that supports explicit memory management, including Rust-style move semantics, in higher-order impure functional languages. Our system refines the existing reachability qualifier with polymorphic \emph{use} and \emph{kill} effects that record how references are read, written, transferred, and deallocated. The effect discipline tracks operations performed on each resource using qualifiers, enabling the type system to express ownership transfer, contextual freshness, and destructive updates without regions or linearity. We formalize the calculus, its typing and effect rules, and a compositional operational semantics that validates use-after-free safety. All metatheoretic results, including preservation, progress, and effect soundness, are mechanized. The system models idioms such as reference deallocation, move semantics, reference swapping, while exposing precise safety guarantee. Together, these contributions integrate reachability-based reasoning with explicit resource control, advancing the state of the art in safe manual memory management for higher-order functional languages.
Similar Papers
When Lifetimes Liberate: A Type System for Arenas with Higher-Order Reachability Tracking
Programming Languages
Lets programs safely share and manage computer memory.
Complete the Cycle: Reachability Types with Expressive Cyclic References (Extended Version)
Programming Languages
Lets computers safely share and change information.
Linear effects, exceptions, and resource safety: a Curry-Howard correspondence for destructors
Programming Languages
Makes computer programs safely use and free up resources.