Download Latest Version v0.2.4 source code.tar.gz (1.7 MB)
Email in envelope

Get an email when there's a new version of Stoolap

Home / v0.2.4
Name Modified Size InfoDownloads / Week
Parent folder
README.md 2026-01-24 2.1 kB
v0.2.4 source code.tar.gz 2026-01-24 1.7 MB
v0.2.4 source code.zip 2026-01-24 2.0 MB
Totals: 3 Items   3.7 MB 0

What's New in v0.2.4

This release focuses on memory optimization and MVCC performance, reducing memory footprint by 33% for core data structures and introducing a copy-on-write B+ tree for O(1) MVCC snapshots.

Performance Improvements

CowBTree for O(1) MVCC Snapshots - Replace RwLock<BTreeMap> with copy-on-write B+ tree enabling structural sharing - Readers clone tree root (atomic increment) then iterate without holding locks - Dual refcount system for correct concurrent drop coordination - Rightmost split optimization for sequential inserts

Value Size Reduction (24 → 16 bytes, 33% smaller) - Redesigned SmartString with packed struct and tag byte for niche optimization - Extended CompactArc to support DSTs (str, [T]) with thin pointers (8 bytes) - Option<Value> also 16 bytes with no discriminant overhead

MVCC Memory Footprint Reduction - Remove row_id from RowVersion (8 bytes saved per version) - Remove chain_depth from VersionChainEntry (8 bytes saved) - Use NonZeroU64/NonZeroUsize for arena indices (RowIndex: 24 → 16 bytes) - V2 persistence format without redundant row_id field (backward compatible)

Subquery Caching (5.3x faster) - Cross-query subquery caching with table-based invalidation - Cache entries track referenced tables for selective invalidation on DML

Bug Fixes

  • Fix double-free in CowBTree internal node merge
  • Fix dirty read vulnerability: Database::clone() now creates independent executor
  • Fix join projection column ordering with ColumnSource enum
  • Fix ORDER BY + LIMIT with Hash index fallback Thanks to @nhansiromeo
  • Fix FULL OUTER JOIN null row handling in nested loop join

Other Changes

  • Migrate Value-keyed maps to AHash for HashDoS resistance
  • Simplify Row storage from 3 variants to 2 (Shared/Owned)
  • Add LRU bounds to thread-local caches (scalar/IN subquery: 128, semi-join: 256)
  • Add comprehensive SAFETY comments to unsafe blocks
  • Panic safety fixes in CompactVec (clone, extend, from_iter)

Full Changelog: https://github.com/stoolap/stoolap/compare/v0.2.3...v0.2.4

Source: README.md, updated 2026-01-24