Skip to content

Releases: Cydhra/vers

Bit Predecessor and Successor Queries

14 Jun 15:13

Choose a tag to compare

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

Full Changelog: 1.9.1...1.10.0

Fix Elias-Fano Search Edge-Case

17 Apr 09:58

Choose a tag to compare

Bugfixes

  • Fix EliasFanoVec::rank returning out-of-range index for last element of large bucket by @rustamch in #41

New Contributors

New Constructors and Debugging Support

18 Feb 14:49

Choose a tag to compare

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_dbg for memory debugging support and more granualar memory size measuring

Improve Inlining Defaults

06 Nov 14:26

Choose a tag to compare

Bugfixes

  • This patch changes the lookup tables for BP trees from const to static to 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

19 Oct 14:29

Choose a tag to compare

Bugfixes

  • rustdoc removed the doc_auto_cfg feature which broke the rustdoc pipeline
  • Fixed several broken doclinks

SIMD Stabilization

19 Oct 13:25

Choose a tag to compare

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

09 Jun 12:52

Choose a tag to compare

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_at to split a bit vector into two
    • BitVec::extend_bitvec and Extend<BitVec> implementation for BitVec to append bit vectors to existing vectors

New Contributors

1.6.3 Minor Space and Runtime Improvements

12 May 18:17

Choose a tag to compare

Improvements

  • removed unnecessary padding at the end of RsVec instances. 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) and RsVec::get_bits(i, n) (and the unchecked versions), improving the performance of most operations of BpTree and some of EliasFano by 5-6%

1.6.2 BP serde Support

27 Mar 17:48

Choose a tag to compare

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

09 Mar 12:46

Choose a tag to compare

Bugfixes

  • When a BitVec contained non-zero bits in the last limb that were not part of the Vector, either due to using append_bit with extra bits, or by dropping bits from the vector, RsVec::from_bit_vec miscounted the amount of zeros.