Skip to content

Rust libraries and programs focused on succinct data structures

License

Apache-2.0, MIT licenses found

Licenses found

Apache-2.0
LICENSE-APACHE
MIT
LICENSE-MIT
Notifications You must be signed in to change notification settings

beling/bsuccinct-rs

Repository files navigation

Succinct data structures and other Rust libraries and programs by Piotr Beling.

Build Status License License

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.

Bibliography

When using bsuccinct for research purposes, please cite the following paper:

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

Platforms with 32-bit addressing

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.