arXiv · 2504.01841
Garbage Collection for Rust: The Finalizer Frontier
Abstract
Rust is a non-Garbage Collected (GCed) language, but the lack of GC makes expressing data-structures that require shared ownership awkward, inefficient, or both. In this paper we explore a new design for, and implementation of, GC in Rust, called Alloy. Unlike previous approaches to GC in Rust, Alloy allows existing Rust destructors to be automatically used as GC finalizers: this makes Alloy integrate better with existing Rust code than previous solutions but introduces surprising soundness and performance problems. Alloy provides novel solutions for the core problems: finalizer safety analysis rejects unsound destructors from automatically being reused as finalizers; finalizer elision optimises away unnecessary finalizers; and premature finalizer prevention ensures that finalizers are only run when it is provably safe to do so.
Explore related subjects
Keep this discovery
Jacob Hughes, Laurence Tratt. 2025-04-02. Garbage Collection for Rust: The Finalizer Frontier. https://doi.org/10.1145/3763179
Cite the original work for its findings. Save a collection to share your selection of sources.