The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.
Version 0.13 - 2024-08-16
  - Support for Storable freeze/thaw on trees and nodes (but not iterators)
  - More complete XS constructor is faster and allows more things to be
    initialized, including the "recent" list, and "keys" without values.
    Warns on unknown attribute names, now.
  - Fix null pointer bugs accessing certain attributes of pruned nodes
  - example "newest-files"
  - Documentation updates

Version 0.12 - 2024-07-09
  - Fix fatal bug in prev_inserted_trend optimization

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