Revision history for Data-HashMap-Shared

0.02  2026-03-17
    - New ops: add, update, swap, cas, pop, shift, drain, set_multi,
      get_multi, persist, set_ttl, touch, reserve, flush_expired_partial,
      ttl_remaining, stats, arena_used, arena_cap, stat_evictions,
      stat_expired, stat_recoveries
    - Clock/second-chance eviction: lock-free LRU reads
    - Hash-tag probe filtering, prefetch, lru_skip optimization
    - SSE2-accelerated state scanning for iteration
    - SSE2-accelerated tag matching in probe loops
    - Inline small strings (≤7 bytes) stored in node structs, no arena overhead
    - Batch get_multi with prefetch pipeline under single lock
    - Fast monotonic clock (CLOCK_MONOTONIC_COARSE) for TTL paths
    - Pre-sized copy_buf to avoid realloc on first access
    - C-level sharding: new_sharded($path, $shards, ...) for parallel writes
    - Cursor chains across shards with correct iterating/flush_deferred
    - Harden header validation, fix cursor_seek gen tracking
    - SHM_VERSION 7 (inline strings, monotonic timestamps)

0.01  2026-03-14
    - 10 type-specialized shared-memory hash map variants (II, SS, SI, IS,
      I16, I32, I16S, I32S, SI16, SI32)
    - File-backed mmap(MAP_SHARED) for cross-process data sharing
    - Futex-based read-write lock with seqlock for lock-free reads
    - Lock-free atomic counters (incr/decr under read lock)
    - Elastic hash table capacity (automatic grow/shrink)
    - Arena allocator with free-list reclamation for string storage
    - Keyword API via XS::Parse::Keyword
    - Opt-in LRU eviction and per-key TTL (zero cost when disabled)
    - Removal-safe iteration with deferred resize/compact
    - Cursor API: independent iterators with seek, reset, nesting
    - Stale lock recovery via PID tracking (auto-recover after 2s timeout)
    - Diagnostic error messages from constructor
    - Bundled xxHash 0.8.3 (XXH3_64bits) for hashing