Changelog v0.2.3

Record-breaking 122M+ ops/sec throughput, io-uring batched completions, sub-10ns execution latency, and lock-free vector & pub/sub enhancements.

v0.2.3

Released: October 2026

v0.2.3 delivers major throughput breakthroughs across every database workload, driven by optimized lock-free concurrency, gated io-uring socket send batching in worker loops, test-and-test-and-set spinlock backoff, and direct zero-copy execution pipelines.

Against a 12-node Redis Cluster, a single FyroDB node reaches 122.68M Hot Key ops/sec (76.2×), 120.49M INCR ops/sec (18.4×), 152.20M Pub/Sub msg/sec (18.8×), 40.21M GET ops/sec (3.46×), and 28.32M SET ops/sec (4.34×).


Highlights

  • Record-Breaking Throughput:
    • 120.49M INCR ops/sec (~8.3 ns per op) under multi-client counter workloads.
    • 122.68M Hot Key ops/sec (~8.15 ns per op) under extreme single-key contention across 100 concurrent clients.
    • 152.20M msg/sec Pub/Sub delivery (~6.57 ns per message) with lock-free Arc snapshot subscriber fan-out.
    • 67.72M LPUSH/RPOP ops/sec (~14.8 ns per op) via zero-allocation Quicklist chunked ring buffer recycling.
    • 62.51M HSET/HGET ops/sec (~16.0 ns per op) for high-frequency session workloads.
    • 40.21M GET ops/sec (~24.9 ns per op) with wait-free 14-bit hash tag filtering and zero-copy TCP stream writes.
    • 28.32M SET ops/sec (~35.3 ns per op) and 12.14M Pipeline-64 SET ops/sec (~82.4 ns per op).
  • io-uring Batched Completions:
    • Network worker event loops now batch pending socket sends when ≥2 connections have unwritten data, completing ring operations together and amortizing syscall submission overhead.
  • Sub-10ns Execution Latency:
    • Contended writes utilize test-and-test-and-set (TTAS) spinloops with exponential backoff (MAX_SPIN_BACKOFF = 64) and worker thread yields to eliminate cache-line bouncing.
    • Atomic counter operations mutate directly inside 64-byte L1 cache-aligned Entry structures without memory allocations.
  • Vector & AI Search Latency:
    • HNSW graph ANN queries complete in ~192.5 µs (5.2k queries/sec) with SIMD-accelerated distance kernels and thread-local scratch buffers.
    • BM25 full-text queries execute in ~24.1 µs (41.5k queries/sec).

Performance Comparison (v0.2.3 vs Redis Cluster)

Single FyroDB node vs 12-node Redis Cluster on a 6-core Intel i5-11400H (12 hardware threads):

Benchmarkv0.2.3Redis Cluster (12 nodes)Speedup vs RedisAvg Latency
Pipeline-64 SET12.14M ops/sec5.00M ops/sec2.43×~82.4 ns
Pipelined SET28.32M ops/sec6.53M ops/sec4.34×~35.3 ns
Pipelined GET40.21M ops/sec11.62M ops/sec3.46×~24.9 ns
Mixed SET/GET (50/50)32.86M ops/sec5.82M ops/sec5.65×~30.4 ns
INCR (atomic counters)120.49M ops/sec6.54M ops/sec18.4×~8.3 ns
HSET/HGET (sessions)62.51M ops/sec6.63M ops/sec9.43×~16.0 ns
LPUSH/RPOP (queue)67.72M ops/sec7.17M ops/sec9.44×~14.8 ns
SADD (per-client sets)37.18M ops/sec6.27M ops/sec5.93×~26.9 ns
ZADD (per-client zsets)17.42M ops/sec4.78M ops/sec3.64×~57.4 ns
JSON.GET (documents)22.96M ops/sec3.23M ops/sec7.11×~43.6 ns
JSON.SET (documents)11.07M ops/sec3.23M ops/sec3.43×~90.3 ns
SET+EXPIRE (cache TTL)11.36M ops/sec2.41M ops/sec4.71×~88.0 ns
Hot Key (contention)122.68M ops/sec1.61M ops/sec76.2×~8.15 ns
Producer/Consumer (50+50)36.16M ops/sec1.70M ops/sec21.3×~27.7 ns
Pub/Sub publish3.04M ops/sec161.9K ops/sec18.8×~328.9 ns
Pub/Sub delivery152.20M msg/sec8.09M msg/sec18.8×~6.57 ns
XADD (streams)15.41M ops/sec4.27M ops/sec3.61×~64.9 ns
SETBIT/BITCOUNT (bitmap)33.62M ops/sec5.94M ops/sec5.66×~29.7 ns
PFADD/PFCOUNT (HyperLogLog)61.82M ops/sec6.03M ops/sec10.3×~16.2 ns
GEOADD/GEODIST (geospatial)8.43M ops/sec3.07M ops/sec2.75×~118.6 ns
Vector HSET load152.4K ops/sec66.4K ops/sec †2.30×~6.56 µs
Vector KNN-10 (FLAT)1.0K q/s104 q/s †9.6×~971 µs
Vector KNN-10 +tag filter1.7K q/s162 q/s †10.5×~586 µs
Text term search (BM25)41.5K q/s1.6K q/s †25.9×~24.1 µs
Text negation21.5K q/s361 q/s †59.6×~46.5 µs
Vector HNSW KNN-105.2K q/s1.1K q/s †4.73×~192.5 µs
Vector HNSW M=32 KNN-102.6K q/s1.1K q/s †2.36×~387 µs

† Redis Cluster does not distribute vector or graph operations across nodes — those benchmarks ran against a single Redis node.

See the full benchmark breakdown and charts in Benchmarks.