All notable changes to the publishable crates in this workspace are documented here.
During the early OSS release window, the published wombatkv-* crates move
in lockstep at the same version. That may change once their public surfaces
stabilize further.
The format follows Keep a Changelog
and the versions follow Semantic Versioning with
explicit pre-release tags such as -alpha.N, -beta.N, and -rc.N.
0.1.0-alpha.pre1.0 - 2026-05-25
Initial public launch of the wombatkv-* crates on crates.io.
The published crates form an object-storage-native KV cache system for LLM inference: prefix-share blocks that survive across processes, machines, and pod restarts. The integration reference is the ds4 fork; validation covers Mac M3 with native MinIO and cross-host Mac to Linux over LAN. Headline benchmark numbers and per-row breakdowns live in BENCHMARKS.md.
- BLAKE3 content-addressed blocks; sha256-derived 24-hex model fingerprint.
- S3 / MinIO backend with idempotent PUT, conditional CAS via If-Match,
explicit retry budgets, and a default-dev-credentials guardrail
(
WMBT_KV_LOCAL_DEV=1). - WAL durability with read-after-write semantics (RFC 0004); per-format explicit version markers (RFC 0002).
- L0 in-memory
BlockHash → BlockMetaindex. - L1 SlateDB-backed metadata index that persists across restarts (RFC 0008 §5; unconditional open in daemon + cabi).
- Per-block
LayoutTagfield for multi-engine futures (ds4-v1,sglang-page-v1reserved markers).
- foyer hybrid (RAM + SSD) cache with zero-copy borrowed reads.
- Block-prefix lookup + parallel batched GET / PUT.
- Background prefetch worker (
WMBT_KV_PREFETCH_INTERVAL_MS,WMBT_KV_PREFETCH_TOP_K). - Per-namespace LRU eviction (RFC 0009), opt-in via
WMBT_KV_NAMESPACE_MAX_BYTES. - Optional block-storage compression (
WMBT_KV_BLOCK_COMPRESS=zstd, level 1-22).
- Three transports: SHM (myelon disruptor ring, same-host), TCP (length-prefixed rkyv, cross-host), HTTP/1.1 (rkyv-in-POST, proxy-friendly).
- Universal 16-byte wire envelope (RFC 0018 Phase 1): magic + version + CRC32C + body length. Engine clients reject malformed envelopes cleanly; no orphan-decode panics.
- compio per-shard runtime for TCP + HTTP listeners
(
WMBT_KV_TCP_TPC_THREADS/WMBT_KV_HTTP_TPC_THREADS, default 2). io_uring on Linux; kqueue on macOS. - Arena allocator for zero-copy large frames
(
WMBT_KV_DAEMON_SHM_ARENA_PATH/_BYTES). - RFC 0011 lifecycle hardening: client-liveness heartbeat (default
500 ms write rate, 3000 ms stale threshold, 250 ms check period),
fail-loud SHM attach (bounded
MAX_OPEN_RETRIES, RFC 0011 P10), graceful shutdown drain.
- Single
libwombatkv.{so,dylib}cdylib; hand-writtencrates/wombatkv-cabi/include/wombatkv.hheader. -
wmbt_kv_init_from_env()resolves backend from env at handle-open: embedded → SHM → TCP → HTTP priority order. - Block-prefix hot path:
wmbt_kv_lookup_block_prefix/_get_kv_blocks_borrowed/_put_kv_blocks/_release_borrow. - Sidecar raw_tail:
wmbt_kv_put_raw_tail/_get_raw_tail_borrowed. - Hardware-dispatched primitives:
wmbt_kv_crc32c_append(Castagnoli via thecrc32cRust crate, runtime dispatch to x86_64 SSE4.2, ARMv8.1 CRC32, or software-table fallback),wmbt_kv_blake3_64hex. - ds4 reference integration documented in
ds4/WOMBATKV.md.
- All env vars prefixed
WMBT_KV_*. - Three reserved category sub-prefixes:
WMBT_KV_TEST_*,WMBT_KV_DST_*,WMBT_KV_BENCH_*. - Functional sub-prefixes (
S3_,PUFFER_,DAEMON_*,TCP_,HTTP_,SLATEDB_) optional when the component has clustered knobs. - Time units in name (
_MS/_SECS); bytes (_BYTES); booleans default-off + opt-in by setting; default-on knobs that DISABLE end in_DISABLE. - See
book/src/operations/env.mdfor the full 78-var inventory.
- 20 failure classes covering storage, concurrency, restart, transport
chaos, wire-envelope corruption, version-recovery, multi-tenant
conflicts, and daemon-startup configuration mismatch (the
DaemonTpcOnlyNoShmClientclass catches the--tpc+ TCP-only misconfiguration). - Cross-process child runner (
wombatkv-dst-runner-child) loadsFaultPlanvia env, drives a 20-op oracle-checked sequence, emits structuredChildReportfor parent diff. - Sweep harness (
scripts/dst-sweep.sh): N seeds × all classes for CI.
- Python connector (
wombatkv-py) for vLLM / SGLang. The daemon's wire protocol (rkyv over TCP / HTTP) is language-agnostic; Python engines will use it directly without going throughwombatkv-cabi. - Paged-attention block layout (
sglang-page-v1LayoutTagis reserved but no production callers; the chain-shaped block API serves ds4 + llama.cpp + Ollama only). - Helm chart / production deployment story.
- Prometheus / OpenTelemetry metrics export from the daemon (hooks exist
via the
metricscrate facade; full exporter wiring is deferred to a follow-up release). - Hugepages-backed SHM segments; NUMA-aware placement.
- antirez/ds4 by Salvatore Sanfilippo -
the inference engine WombatKV's first integration plugs into. The ds4
fork in
Venkat2811/ds4carries the#ifdef DS4_WOMBATKVhooks. myelonby Venkat Raman - the ultra-low-latency cross-process transport layer behind the daemon's SHM ring.wombatkv-daemonbuilds onmyelon's disruptor-mp + compio primitives.- SlateDB, the L1 metadata-index backing the radix index.
- foyer, the RAM + SSD hybrid cache backing the read path.
- Codex (OpenAI) and Claude Code (Anthropic) shared the agentic-engineering load across the development cycle. See the README's "Built with" section.