Lavik 0.2.0
A performance-focused release with leaner String and collection paths, queued I/O submissions, replication and recovery fixes, and opt-in data-record CRCs. Summarizes 47 commits since 0.1.0.
Release at a glance
Released October 21, 2026. v0.2.0 identifies commit 2908f86f2770e9c6e8acc6585b3bedb4b44d1cd5. These notes group the 47 commits after v0.1.0 by their impact on applications and operations. Lavik remains Apache 2.0, with Minimal and Standard archives for Linux x86-64 and ARM64.
Less copying and allocation in the data path
Large String receive, staging, segment, and read paths remove intermediate copies. Grouped List updates bound prepend fragmentation and String directory rebuild work. Hash and Set point reads avoid decoding entire compact objects; compact writes splice the affected data. Sorted Set updates reuse neighboring and dense page capacity and edit encoded pages with fewer per-member allocations. Collection replies are packed and batched into owned byte blocks.
Queued storage work and memory release
The io_uring and SPDK paths adopt queued submissions. Grouped reads are parallelized per physical owner; transaction cleanup is decoupled from writes and flushes are batched. String and Stream preparation release worker store state while work is prepared. The allocator defaults to immediate online mimalloc purging. These implementation changes target overhead; each published performance number still belongs to its recorded workload and configuration.
Replication, administration and Stream fixes
Replication V2 encoding supports wide argument counts, and replication preserves already-admitted writes under memory pressure. Accepted Admin mutation results are retained. Stream range reads refresh locations before pinning them. Managed FLUSH recovery, native handoff readability, lease-policy proxy handling and concurrency diagnostics also receive fixes or stronger regression coverage.
Data-record CRC is now opt-in
CRC generation for new data records and value/key extents is disabled by default. Enable it at startup with --record-crc or record-crc yes; --no-record-crc or record-crc no selects the disabled policy on the next start. Each object persists its policy. Reads continue to validate CRCs that are present, including older records. Device labels, block headers, metadata, checkpoints, function catalogs and replication frames retain their integrity checks. Readers predating the no-CRC flags cannot consume those objects; plan backups and recovery rehearsal before an upgrade and do not assume an in-place downgrade is supported.
New published benchmark results
The October 21 reports cover 2-vCPU and 16-vCPU Redis/Valkey comparisons, a billion-key SSD-backed comparison, and Aerospike YCSB. On the 16-vCPU 10M-key SPDK workload, Lavik reaches 1,156,956 GET QPS and 945,384 SET QPS at 1,280 connections. The separate 1B-key run reaches 1,129,597 GET QPS and 910,356 SET QPS. Workloads, client counts, hosts and persistence differ across experiments; the benchmark pages provide paired latency and complete methods.
Install and evaluate 0.2.0
Download the checksummed 0.2.0 release archive matching your architecture. Standard includes DPDK/SPDK; Minimal uses kernel TCP/io_uring. Both require Linux 6.1+ with io_uring enabled and Ubuntu 24.04-compatible glibc. The archive includes lavik, lavik-meta, lavik-ctl, Lavik Admin and its Node.js runtime. The version selector retains the 0.1.0 and beta documentation.