Lock-free atom garbage collection for multithreaded Prolog
Jan Wielemaker, Keri Harris

TL;DR
This paper introduces a lock-free atom table implementation for Prolog that allows concurrent access and garbage collection without stop-the-world pauses, improving scalability and real-time suitability.
Contribution
The paper presents a novel lock-free atom table design for Prolog, enabling concurrent access and garbage collection without external libraries.
Findings
Lock-free atom table improves scalability
Supports concurrent atom garbage collection
No external libraries needed
Abstract
The runtime system of dynamic languages such as Prolog or Lisp and their derivatives contain a symbol table, in Prolog often called the atom table. A simple dynamically resizing hash-table used to be an adequate way to implement this table. As Prolog becomes fashionable for 24x7 server processes we need to deal with atom garbage collection and concurrent access to the atom table. Classical lock-based implementations to ensure consistency of the atom table scale poorly and a stop-the-world approach to implement atom garbage collection quickly becomes a bottle-neck, making Prolog unsuitable for soft real-time applications. In this article we describe a novel implementation for the atom table using lock-free techniques where the atom-table remains accessible even during atom garbage collection. Relying only on CAS (Compare And Swap) and not on external libraries, the implementation is…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsDistributed systems and fault tolerance · Logic, programming, and type systems · Security and Verification in Computing
