Revision history for Data-SortedSet-Shared
0.05 2026-08-12
- Recover a file left behind by an interrupted create instead of
leaving the path unopenable.
- Frozen read-only mode: freeze() seals a file-backed structure;
new_readonly() maps it O_RDONLY and queries it lock-free.
- Documentation and test-harness corrections.
- Refuse a header whose root names a real node while the tree
claims to be empty. The node is still on the free list, so the
next insert descended from it and read uninitialised links.
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.