Multicore-safe backends with internal Mutex
Both In_memory and Sqlite backends now have an internal Mutex.t that
serializes all operations. The Vds.t wrapper is pure dispatch — no
locks, no overhead.
Backends own their concurrency story:
- In_memory: Mutex protects Growable, Compact, Node_cache, Hashtbl
- Sqlite: Mutex protects in-memory cache; SQLite transactions for
disk atomicity
Performance: ~250k appends/s single-domain (uncontended Mutex adds
~5ns per operation — within noise). Multicore: domains block on the
Mutex for writes, which is correct for an append-only log.