bsuccinct-rs
bsuccinct-rs copied to clipboard
Rust libraries and programs focused on succinct data structures
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 (new and not well tested yet);minimum_redundancy(crate, doc) - encode and decode data with binary or non-binary Huffman coding;fsum(crate, doc) - calculate accurate sum of floats;bitm(crate, doc) - bit and bitmap manipulation;binout(crate, doc) - binary encoding, decoding, serialization, deserialization;dyn_size_of(crate, doc) - report approximate amount of 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.
Bibliography
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
Installation
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.
Installing rust programs
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