Version 0.11 - 2024-07-09
- New comparison flag GET_OR_ADD, inserts an empty node if one didn't exist
- New get_key function returns nearest key to one requested.
- New get shortcuts get_or_add, get_key_lt, get_key_le, get_key_gt, get_key_ge
- Methods get, lookup, get_or_add, FETCH, and node method 'value' are now
flagged as lvalue subs.
- New exportable function 'cmp_numsplit' can be used independent of tree nodes
Version 0.10 - 2024-07-05
- New method 'exists', takes list of keys and returns node count
- New methods put_multi and insert_multi
- Optimization for insertions of adjacent nodes, can build new tree
in N+1 comparisons
- New configuration attribute 'lookup_updates_recent' finishes the feature
set needed for a typical LRU cache.
- Constructor option 'kv' to initialize the tree
- Fix bug when replacing multiple nodes with a 'put'
Version 0.09 - 2024-07-04
- Fix XS bug in iter->next when iterating 'recent' and count > 1.
- Count greater than INT_MAX passed to iter->next now returns all nodes
instead of zero nodes.
Version 0.08 - 2024-07-02
- New feature of insertion-order tracking:
- Tree attributes: track_recent (and ctor option), newest_node,
oldest_node, recent_count
- Tree methods: iter_newer, iter_older, truncate_recent
- Node attributes: newer, older, recent_tracked
- Node methods: mark_newest, iter_newer, iter_older
- Iterator attribute 'node' (had 'key' and 'value', but not 'node'?)
- Fix bug so iterators can be called as functions, as intended
- Alias iterator methods for clearer singular usage
'next_keys' => 'next_key'
'next_values' => 'next_value'
Version 0.07 - 2022-06-04
- Actual fix for iter->next_kv, only affects debug perls - GitHub #2
- Explicitly require Scalar::Util
Version 0.06 - 2022-05-22
- Possible fix for bug in iter->next_kv
Version 0.05 - 2021-11-20
- Implement hseek
- Fix more bugs in utf8 comparisons (should be really fixed this time)
- Fix compilation on 32-bit platforms
- util/benchmark.pl compares performance with other similar modules
Version 0.03 - 2021-11-18
- New XS iterators, with lots of new methods: clone, key, value, index,
tree, next_kv, next_keys, next_values, step, delete.
- Iterators now automatically move to the next item if the current node
gets removed from the tree.
- Iterators now hold a strong reference to the tree.
- TIEHASH interface, for those who want it.
- More unit tests, more documentation.
- Fixed compilation on 5.12, 5.10, 5.8 at the cost of correct UTF-8 cmp.
Version 0.02 - 2021-11-15
- New CMP_NUMSPLIT comparison function
- New get_node shortcuts: get_node_last, get_node_le, get_node_le_last,
get_node_lt, get_node_ge, get_node_gt.
- Code cleanup
- Minor documentation fixes
Version 0.01 - 2021-11-15
- Finished implementing almost all methods of Tree::RB
- Renamed option 'compat_list_context' to 'compat_list_get'
since it only affected the 'get' method.
- Add tree methods: root, iter, rev_iter
- Add node methods: tree, left_leaf, right_leaf, strip, as_lol
min, max, successor, predecessor
Version 0.00_03 - 2021-11-14
- KEY_TYPE_USTR now uses a correct unicode comparison function.
- Added option 'compat_array_context'
- Comparison functions can now be specified by enum constants
- Added api methods get_all, iter, rev_iter
- Delete now takes a second optional param to delete a range
- Renamed exported constants LU_* to GET_*, and added GET_LE_LAST
and GET_EQ_LAST to handle common cases for duplicate keys.
- More unit tests
- Much more documentation
Version 0.00_02 - 2021-11-13
- Enhanced string-key performance using KEY_TYPE_BSTR and
KEY_TYPE_USTR. KEY_TYPE_STR is removed.
- Various distribution fixes, documentation, etc.
Version 0.00_01 - 2021-11-12
- Initial release, with partial compatibility to Tree::RB