NimbusKV Technical Transparency Center
Clear specifications of NimbusKV's concurrency guarantees, memory model, lock architecture, error semantics, and explicit non-goals.
Lock-Free Reads (Readers Never Lock)
GuaranteeReaders never acquire a lock, wait on a mutex, or retry an atomic compare-and-swap loop. When a thread calls store.get(), store.items(), or reads a snapshot, it reads directly from an immutable Hash Array Mapped Trie (HAMT) node pointer.
Single Short Write Mutex
v3 ArchitectureAll writes (set(), delete(), mset(), atomic()) serialize through a single short, deterministic mutex. Writers take the lock once, perform path-copying on the HAMT, swap the root pointer, and release the lock immediately.
ReentrantWriteError Specification
Deadlock SafetyCalling a write method (like store.set() or store.delete()) from inside an atomic() or mutate() callback raises ReentrantWriteError immediately. This prevents recursive lock acquisition and deadlocks.
Generational TTL Memory Safety
Zero LeakIn v3.1.0, the TTL scheduler tracks generation counters. Overwriting a key increments its generation, so stale priority queue deadlines are safely discarded upon inspection without memory leaks.
Explicit Architectural Boundaries & Non-Goals
NimbusKV is an in-process Python data structure. Separate OS processes or machines do NOT automatically share memory without a network layer.
NimbusKV is not an alternative to distributed multi-node Redis clusters. It is optimized for sub-microsecond local in-memory thread concurrency.
SQLite and Redis persistence backends operate as write-ahead or write-behind layers under the write lock, designed for local durability.
Responsible Security Disclosure Policy
We follow strict coordinated vulnerability disclosure. Discovered issues receive priority patches and CVE tracking.