Announcing arctic: a lock-free concurrent ordered map

186 points nwtnni 14 comments

Hi everyone!

We recently published a new lock-free concurrent ordered map called arctic at OSDI '26, a systems research conference, and on crates.io. Some example use cases are memtables in log-structured merge trees, or indexes in databases using multi-version concurrency control. I've been working on this data structure for more than a year, and believe it's now mature enough to be useful to the wider community. (To hopefully disarm AI slop detectors without derailing: I did not and have yet to use LLMs in any capacity, including: brainstorming, testing, benchmarking, or writing code, documentation, or prose).

Arctic is based on the adaptive radix tree (ART), which provides lexicographical ordering. We designed a new metadata layout and coordination protocol that achieves lock-freedom without sacrificing performance. Arctic offers lock-free linearizable writes, wait-free linearizable reads, and wait-free non-linearizable range and prefix scans. As a quick demonstration of performance, here are throughput vs. thread count measurements for a 95% read, 5% update workload on a machine with 80 physical cores (over two sockets), comparing a variety of academic C/C++ systems and Rust crates (both ordered and unordered).

95% read, 5% update throughput vs. thread count, 100M keys (columns), 100M operations, 80 cores

You can see more of our benchmark results in the arctic repository, or the index-bench repository.

Thanks all for your time :) I've learned a lot from the Rust community over the years and hope somebody finds this work useful. Please feel free to ask questions here or via email. There are a bunch of topics I'd love to discuss further if anyone's interested: pointer provenance, memory ordering, type safety vs. compilation time and complexity, testing, SIMD, a hypothetical 'shortest lifetime.

Note: I am crossposting from the Rust forum for visibility; I hope that's okay.