Revision history for Data-SortedSet-Shared

0.04      2026-07-23
          - Refuse an insert when the node pool cannot satisfy the worst-case
            split, instead of writing through an out-of-range node index if
            the free list is exhausted or corrupt.
          - Validate B+tree node indices on the write paths too (insert,
            delete, merge, underflow), so a corrupt peer-written index stops
            the operation instead of a wild read/write under the lock.
          - Bound the member-index probe and delete scan by the table size, so
            a corrupt all-occupied index fails cleanly instead of spinning.
          - add_many: pin the rows array and each row's SVs across argument
            magic, so a hostile overload cannot dangle the resolve loop.
          - On-disk format change (v1 -> v2): an existing 0.03 file is
            refused; recreate it.
          - Bump Data::SortedSet::Shared::Strings to the dist version so
            PAUSE reindexes it.
          - Resolve argument magic before capturing the path string.
          - Document that a writer crash can corrupt the set.

0.03      2026-07-03
          - Security and robustness hardening; backing files now created mode
            0600 (pass a file-mode argument to new() for cross-user sharing).

0.02      2026-06-24
          - Bundle string-keyed sets: Data::SortedSet::Shared::Strings (string
            members, interned to ids via Data::Intern::Shared) now ships in this
            distribution, with a native constructor Data::SortedSet::Shared->new_strings.
          - New prerequisite: Data::Intern::Shared (for the string-keyed variant).
          - DESTROY now nulls the handle SV before freeing (use-after-destroy
            croaks cleanly; double DESTROY is a no-op).
          - stats: compute index_load directly; range_by_score reuses the
            lower-bound rank (one tree descent instead of two).

0.01      2026-06-22
          - Initial release.
