rustreexo 0.6.0

A Rust implementation of Utreexo
Documentation
[package]
name = "rustreexo"
version = "0.6.0"
description = "A Rust implementation of Utreexo"
keywords = ["accumulator", "bitcoin", "utreexo"]
categories = ["algorithms", "cryptography::cryptocurrencies", "no-std"]
authors = ["Calvin Kim <calvin@kcalvinalvin.info>", "Davidson Souza <contact@dlsouza.dev>"]
repository = "https://github.com/mit-dci/rustreexo"
license = "MIT OR Apache-2.0"
readme = "README.md"
edition = "2018"
rust-version = "1.74.0" # MSRV
autobenches = false

[features]
default = ["std"]
std = ["bitcoin_hashes/std", "hex-conservative/std", "hashbrown/default-hasher"]
with-serde = ["serde"]

[dependencies]
bitcoin_hashes = { version = "0.20", default-features = false }
hex-conservative = { version = "1", default-features = false }
serde = { version = "1.0.228", features = ["derive"], optional = true }
hashbrown = { version = "0.16.1", default-features = false }
bitcoin-io = { version = "0.5.0", default-features = false, features = ["alloc"] }

# These pins are necessary for `no_std`:
#
# foldhash is hashbrown's default hasher
# Pin it with without default features so it doesn't break no-std
foldhash = { version = "0.2", default-features = false }

[dev-dependencies]
rand = { version = "0.9.3" }
criterion = { version = "0.5.1", features = ["html_reports"] }
serde = { version = "1.0.228", features = ["derive"] }
serde_json = { version = "1.0.81" }
# Transitive dependency pins:
clap = { version = "4.5.61" } # blame: criterion v0.5.1
clap_builder = { version = "4.5.61" } # blame: criterion v0.5.1
clap_lex = { version = "=1.0.1" } # blame: criterion v0.5.1
crossbeam-epoch = { version = "0.9.20" } # blame: criterion v0.5.1 (RUSTSEC-2026-0204)
regex = { version = "1.10.0" } # blame: criterion v0.5.1
bumpalo = { version = "3.11.1" } # blame: criterion v0.5.1 (RUSTSEC-2022-0078)
rayon = { version = "1.5.3" } # blame: criterion v0.5.1 (RUSTSEC-2022-0021, RUSTSEC-2023-0045)
errno-dragonfly = { version = "0.1.2" } # blame: criterion v0.5.1 (RUSTSEC-2025-0121)

[[bench]]
name = "accumulator"
harness = false

[[bench]]
name = "proof"
harness = false

[[bench]]
name = "stump"
harness = false

[lints.clippy]
use_self = "warn"

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(bench)'] }

[package.metadata.rbmt.toolchains]
stable = "1.96.0"
nightly = "nightly-2026-06-23"

[package.metadata.rbmt.test]
# Test all possible auto-discovered feature combinations.
sample_strategy = "all"

# Features to exclude from auto-discovery.
# Use for internal or alias features that should not be tested in isolation.
exclude_features = ["default"]

# Examples to run with different feature configurations.
#
# Supported formats:
# * "name" - runs with no-default-features.
# * "name:feature1 feature2" - runs with specific features.
examples = [
    "stump_modify",
    "stump_modify:std",
    "stump_modify:with-serde",
    "stump_modify:with-serde std",
    "proof_update",
    "proof_update:std",
    "proof_update:with-serde",
    "proof_update:with-serde std",
    "custom_hash",
    "custom_hash:std",
    "custom_hash:with-serde",
    "custom_hash:with-serde std",
]

# Allow packages of different versions in the dependency tree.
[package.metadata.rbmt.lint]
allowed_duplicates = [
]