Succinct data structures and other Rust libraries and programs by Piotr Beling.
Included libraries:
ph
(crate, doc) - minimal perfect hash functions (FMPH and FMPHGO);csf
(crate, doc) - compressed static functions (maps);cseq
(crate, doc) - compact sequences (like Elias-Fano);minimum_redundancy
(crate, doc) - encode and decode data with binary or non-binary Huffman coding;bitm
(crate, doc) - bit and bitmap manipulation;seedable_hash
(crate, doc) - seedable hashers,binout
(crate, doc) - binary encoding, decoding, serialization, deserialization;fsum
(crate, doc) - calculate accurate sum of floats;dyn_size_of
(crate, doc) - calculate memory consumed by variables, including the memory allocated on heap,butils
(crate, doc) - (internal) utilities shared by software included in BSuccinct.
Included programs:
mphf_benchmark
(crate, doc) - benchmarking minimal perfect hash functions,csf_benchmark
(crate, doc) - benchmarking compressed static functions,cseq_benchmark
(crate, doc) - benchmarking compact sequences,coding_benchmark
(crate, doc) - benchmarking Huffman coding crates.
Everything is dual-licensed under Apache 2.0 or MIT.
When using bsuccinct
for research purposes, please cite the following paper:
- Piotr Beling, BSuccinct: Rust libraries and programs focused on succinct data structures, SoftwareX, Volume 26, 2024, 101681, ISSN 2352-7110, https://doi.org/10.1016/j.softx.2024.101681
Programs can be compiled and installed from sources. To do this, a Rust compiler is needed.
The easiest way to obtain the compiler along with other necessary tools (like cargo
) is
to use rustup.
Please follow the instructions at https://www.rust-lang.org/tools/install.
Once Rust is installed, to compile and install a program from sources and with native optimizations, just execute:
RUSTFLAGS="-C target-cpu=native" cargo install <program_name>
for example
RUSTFLAGS="-C target-cpu=native" cargo install mphf_benchmark
For portability, BSuccinct components compile and run on platforms with 32-bit addressing (like wasm32). However, they are optimized primarily with 64-bit CPUs in mind.