RLVector
: Run-length encoded bitvector similar to the one in RLCSA.- Consistent conversions between bitvector types:
From
trait between any two bitvector types.- Associated function
copy_bit_vec
for copying from a type that implementsSelect
.
- Trait
VectorIndex
for rank/select-type queries over integer vectors. - Implementations of
VectorIndex
:WaveletMatrix
: Plain balanced wavelet matrix.
- Better
Access
trait.- The default implementation is immutable.
- The trait includes an iterator over the values.
AccessIter
is a trivial implementation of the iterator usingAccess::get
.Access::get_or
returns a default value if the index is not valid.
- Minor patch release for the GBZ paper.
- Elias-Fano encoding can store duplicate values, which simplifies some uses of
SparseVector
. - Built with
SparseBuilder::multiset
orSparseVector::try_from
. - Most bitvector operations generalize from sets to multisets naturally, but
rank_zero
does not work.- If there are multiple occurrences of value
i
, the predecessor ofi
has a higher rank than its successor.
- If there are multiple occurrences of value
select
and related queries returnOption
instead ofResult
.Element
trait is nowVector
.
- Vectors have items instead of elements to avoid confusion between vector elements and serialization elements.
- Uses
rand
0.8 instead of 0.7. - Serialization improvements:
skip_option
,absent_option
, andabsent_option_size
for dealing with optional structures.test
for running basic serialization tests for a new type.
This is no longer a pre-release, but things may still change without warning.
- Documentation on the serialization formats: https://github.com/jltsiren/simple-sds/blob/main/SERIALIZATION.md
- Trait
Serializable
that indicates that a fixed-size type can be serialized by copying the bytes as one or moreu64
elements.- A
Vec
ofSerializable
values can always be serialized.
- A
- Serialization for
Vec
ofu8
values andString
. - Some sanity checks when loading serialized structures.
MemoryMap
that maps a file as an immutable array ofu64
elements.- Trait
MemoryMapped
for structures that correspond to an interval inMemoryMap
. - Several
MemoryMapped
implementations:MappedSlice
:Vec
ofSerializable
values.MappedBytes
:Vec
ofu8
values.MappedStr
:String
.MappedOption
: Optional structure.RawVectorMapper
:RawVector
.IntVectorMapper
:IntVector
.
- 64-bit ARM is now supported.
- Removed the unnecessary
Writer
trait and simplifiedRawVectorWriter
andIntVectorWriter
. - Smaller
SparseVector
, especially for high-density vectors:- Approximate the optimal number of buckets / width of the low parts better.
- Do not create unnecessary buckets.
- Removed a redundant field from the header.
This initial release implements bit-packed integer vectors, plain bitvectors, and sparse (Elias-Fano encoded) bitvectors as well as various bitvector iterators. The performance is generally comparable to SDSL. As this is a pre-release, anything can change without warning.