ptab 0.1.5

Lock-free concurrent table optimized for read-heavy workloads
Documentation

ptab

github crates.io docs.rs build status

Lock-free concurrent table optimized for read-heavy workloads.

Inspired by the Erlang/OTP BEAM process table, ptab provides a fixed-capacity table where lookup operations perform no shared memory writes - not even reference counts. This enables linear read scalability with CPU count.

Usage

Add the following to your Cargo.toml:

[dependencies]
ptab = "0.1"

Example

let table: ptab::PTab<&str> = ptab::PTab::new();
let index: ptab::Detached = table.insert("hello").unwrap();

assert_eq!(table.read(index), Some("hello"));
assert!(table.remove(index));
assert_eq!(table.read(index), None);

Design

See IMPLEMENTATION.md for details.

  • Zero-contention reads: Lookups use only thread-local state and atomic loads
  • Cache-line aware: Consecutive allocations distributed across cache lines
  • Generational indices: Slot reuse produces different indices (ABA prevention)
  • Epoch-based reclamation: Safe memory management via sdd

License