[package]
name = "nova-snark"
version = "0.43.0"
authors = ["Srinath Setty <srinath@microsoft.com>"]
edition = "2021"
description = "High-speed recursive arguments from folding schemes"
documentation = "https://docs.rs/nova-snark/"
readme = "README.md"
repository = "https://github.com/Microsoft/Nova"
license-file = "LICENSE"
keywords = ["zkSNARKs", "cryptography", "proofs"]
rust-version = "1.79.0"

[dependencies]
ff = { version = "0.13.0", features = ["derive"] }
digest = "0.10"
sha3 = "0.10"
rayon = "1.10"
rand_core = { version = "0.6", default-features = false, features = ["getrandom"] }
rand_chacha = "0.3"
subtle = "2.6.1"
generic-array = "1.2.0"
num-bigint = { version = "0.4.6", features = ["serde", "rand"] }
num-traits = "0.2.19"
num-integer = "0.1.46"
serde = { version = "1.0.217", features = ["derive"] }
serde_with = "3.8.3"
bincode = { version = "2", features = ["serde", "std"] }
bitvec = "1.0"
blitzar = { version = "4.4.2", optional = true }
byteorder = "1.4.3"
thiserror = "2.0.11"
once_cell = "1.18.0"
itertools = "0.14.0"

# Use halo2curves ASM on x86_64 by default; disable ASM on non-x86_64
[target.'cfg(target_arch = "x86_64")'.dependencies]
halo2curves = { version = "0.9.0", features = ["std", "bits", "derive_serde", "asm"] }

[target.'cfg(not(target_arch = "x86_64"))'.dependencies]
halo2curves = { version = "0.9.0", features = ["std", "bits", "derive_serde"] }

[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.2.15", default-features = false, features = ["js"] }

[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }
flate2 = "1.0.35"
hex = "0.4.3"
pprof2 = { version = "0.13" }
cfg-if = "1.0.0"
sha2 = "0.10.7"
proptest = "1.6.0"
rand = "0.8.5"
expect-test = "1.5.1"

[[bench]]
name = "recursive-snark"
harness = false

[[bench]]
name = "compressed-snark"
harness = false

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

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

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

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

[features]
default = ["io"]
flamegraph = ["pprof2/flamegraph", "pprof2/criterion"]
experimental = []
evm = []
io = []
