Releases: Cydhra/vers
Releases · Cydhra/vers
Bit Predecessor and Successor Queries
New Features
- The Rank and Select vector now supports predecessorX and successorX queries, returning the predecessor/successor bit for a given index. This is equivalent, but faster (unless the vector is sparse) than calling
select(rank(pos) +- 1)
New Contributors
- @TheDoctor314 made their first contribution in #42
Full Changelog: 1.9.1...1.10.0
Fix Elias-Fano Search Edge-Case
New Constructors and Debugging Support
Improvements
- Added constructors to BitVec that allow packing values from iterators
- Added constructors to BitVec that allow construction from boolean slices and iterators
- Added method to BitVec to allow iterating through its internal u64 limbs
- Added optional dependency
mem_dbgfor memory debugging support and more granualar memory size measuring
Improve Inlining Defaults
Bugfixes
- This patch changes the lookup tables for BP trees from
consttostaticto prevent automatic inlining. This does not change any runtime behavior, but simplifies LTO of downstream crates, shortens compile time of tests, benchmarks, and possibly the crate itself, and potentially improves the binary size.
Fix documentation issues
Bugfixes
rustdocremoved thedoc_auto_cfgfeature which broke the rustdoc pipeline- Fixed several broken doclinks
SIMD Stabilization
The SIMD feature is now stable
Since Rust 1.89.0 stabilized AVX-512, the simd feature no longer requires nightly rust. The feature can now be used on the stable channel for speedups in select, and faster iterators over set bits.
This bumps the MSRV to 1.89.0.
Bugfixes
Due to internal changes to the BitVec and RsVec implementations in version 1.6.3, the Hash implementation no longer fulfilled its invariant with regards to the PartialEq implementation. This is fixed now with a custom implementation of the hashing function.
Quality Of Life
Improvements
- Merged Quality-of-life API improvements. by @arnsholt in #32
- Conversions between
BitVec,RsVec, and various data structures to allow modification of these through back-conversion and regeneration BitVec::split_atto split a bit vector into twoBitVec::extend_bitvecandExtend<BitVec>implementation forBitVecto append bit vectors to existing vectors
- Conversions between
New Contributors
1.6.3 Minor Space and Runtime Improvements
Improvements
- removed unnecessary padding at the end of
RsVecinstances. This padding previously added a constant amount of 0 values to the vector, which were entirely unused and served no purpose. It was a leftover from a previous experimental SIMD implementation. - Reduced the code path branching in
BitVec::get_bits(i, n)andRsVec::get_bits(i, n)(and the unchecked versions), improving the performance of most operations ofBpTreeand some ofEliasFanoby 5-6%
1.6.2 BP serde Support
Added support for serde for the BP structures. This has not been done previously to accomodate changes to the search routines BP builds upon under the hood, but I postponed these changes for a future major update.
1.6.1 BitVector padding bug
Bugfixes
- When a
BitVeccontained non-zero bits in the last limb that were not part of the Vector, either due to usingappend_bitwith extra bits, or by dropping bits from the vector,RsVec::from_bit_vecmiscounted the amount of zeros.