Skip to content

0.10.0

Latest

Choose a tag to compare

@tiborschneider tiborschneider released this 24 Jul 15:15
· 1 commit to main since this release

What's new

rkyv zero-copy (de)serialization

This release adds a new rkyv feature flag, bringing zero-copy serialization support to PrefixMap, PrefixSet, and JointPrefixMap/JointPrefixSet. The archived types implement the same TrieView interface as their live counterparts, so you can look up, iterate, and compute covering/LPM/SPM queries directly on the archived (mmap'ed) representation without deserializing.

  • get, get_key_value, contains, get_lpm, get_spm, is_covered, is_covered_in_aggregate, address_count, children, iter/iter_from, and cover iterators are all available on the archived variants.
  • ArchivedTrieRef type that implements TrieView, enabling integration with concrete (non-archive) types. The new functions on TrieView simplify this process.
  • See the new module-level examples for how to serialize, mmap, and query an archived trie.

Others

  • New FilterView to filter a view by a predicate closure.
  • New ClonedView and CopiedView adapters.
  • New MapView combinator for TrieView.
  • is_covered and is_covered_in_aggregate added to the core map/set API.

Fixes

  • Fixed a repositioning bug in TrieView that could cause UB.
  • Fixed Default implementations on Joint iterators (were previously inconsistent/incorrect).
  • Removed step and navigate_to from the public TrieView interface (internal-only).

Other

  • Raised rust minimal supported version to 1.81.0

Full Changelog: v0.9.4...v0.10.0