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

Folders and files

NameName
Last commit message
Last commit date

Latest commit

a030050 · Mar 19, 2025
Mar 3, 2024
Mar 1, 2024
Mar 19, 2025
Feb 24, 2024
Mar 19, 2025
Mar 19, 2025
Mar 19, 2025
Mar 19, 2025
Mar 19, 2025
Feb 15, 2025
Jul 13, 2022
Oct 2, 2024
Mar 19, 2025
Mar 19, 2025
Feb 17, 2025
Feb 25, 2024
Jan 31, 2024
Oct 6, 2023
Oct 6, 2023
Oct 22, 2024

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.