[package]
name = "twenty-first"
version = "1.1.0"
authors.workspace = true
edition.workspace = true
rust-version.workspace = true

description = "Collection of mathematics routines and cryptography for the twenty-first century."
license.workspace = true
homepage.workspace = true
documentation.workspace = true
repository.workspace = true
readme.workspace = true

keywords = ["polynomial", "merkle-tree", "post-quantum", "algebra", "tip5"]
categories = ["cryptography", "mathematics"]

[lib]
crate-type = ["cdylib", "rlib"]

[dependencies]
arbitrary = { version = "1", features = ["derive"] }
bfieldcodec_derive = "0.7"
get-size2 = { version = "0.7", features = ["derive"] }
hex = "0.4.3"
itertools = "0.14"
num-bigint = { version = "0.4", features = ["serde"] }
num-traits = "0.2"
phf = { version = "0.13", features = ["macros"] }
rand = "0.9"
rayon = "1.10"
serde = { version = "1.0", features = ["derive"] }
serde-big-array = "0.5"
serde_derive = "1"
serde_json = "1.0"
sha3 = "0.10.8"
thiserror = "2.0"
zeroize = { version = "1.8.1", features = ["derive"] }

[target.'cfg(target_arch = "wasm32")'.dependencies]
getrandom = { version = "0.3", features = ["wasm_js"] } # note that there is also a flag in .cargo/config.toml
wasm-bindgen = "0.2.104"

[dev-dependencies]
bincode = "1.3.3"
blake3 = "1.5.5"
macro_rules_attr = "0.1.3"
test-strategy = "=0.4.3"
trybuild = "1.0"
proptest = { version = "1.7.0", default-features = false, features = ["std"] }

[target.'cfg(not(target_arch = "wasm32"))'.dev-dependencies]
criterion = { package = "codspeed-criterion-compat", version = "4.0", features = ["html_reports"] }

[target.'cfg(target_arch = "wasm32")'.dev-dependencies]
criterion = { version = "0.8.1", default-features = false }
wasm-bindgen-test = "0.3.42"

# Workaround for Rust 1.87.0 (see also: <https://github.com/rust-lang/rust/issues/141048>)
[package.metadata.wasm-pack.profile.release]
wasm-opt = ["-O4", "--enable-bulk-memory"]

[lints]
workspace = true

bench
name = "tip5"
harness = false

bench
name = "ntt"
harness = false

bench
name = "evaluation"
harness = false

bench
name = "extrapolation"
harness = false

bench
name = "coset_extrapolation"
harness = false

bench
name = "poly_mod_reduce"
harness = false

bench
name = "interpolation"
harness = false

bench
name = "poly_clean_div"
harness = false

bench
name = "poly_mul"
harness = false

bench
name = "poly_scalar_mul"
harness = false

bench
name = "poly_scale"
harness = false

bench
name = "inverses"
harness = false

bench
name = "merkle_tree"
harness = false

bench
name = "merkle_tree_authenticate"
harness = false

bench
name = "merkle_tree_auth_structure_size"
harness = false

bench
name = "polynomial_coset"
harness = false

bench
name = "various_muls"
harness = false

bench
name = "zerofier"
harness = false

bench
name = "formal_power_series_inverse"
harness = false

Homonyms

cyb/evy/forks/naga/Cargo.toml.orig
warriors/trisha/.vendor/triton-air/Cargo.toml.orig
cyb/evy/forks/bevy_image/Cargo.toml.orig
cyb/evy/forks/bevy_core_pipeline/Cargo.toml.orig
cyb/evy/forks/bevy_mesh/Cargo.toml.orig
warriors/trisha/.vendor/triton-constraint-builder/Cargo.toml.orig
cyb/evy/forks/bevy_pbr/Cargo.toml.orig
cyb/evy/forks/bevy_post_process/Cargo.toml.orig
cyb/evy/forks/bevy_gizmos_render/Cargo.toml.orig
cyb/evy/forks/bevy_animation/Cargo.toml.orig
cyb/evy/forks/bevy_sprite_render/Cargo.toml.orig
cyb/evy/forks/bevy_gizmos/Cargo.toml.orig
warriors/trisha/.vendor/triton-isa/Cargo.toml.orig
cyb/evy/forks/bevy_tasks/Cargo.toml.orig
cyb/evy/forks/bevy_sprite/Cargo.toml.orig
cyb/evy/forks/bevy_render/Cargo.toml.orig
cyb/evy/forks/bevy_anti_alias/Cargo.toml.orig
cyb/evy/forks/bevy_ecs/Cargo.toml.orig
warriors/trisha/.vendor/triton-vm/Cargo.toml.orig
cyb/evy/forks/bevy_diagnostic/Cargo.toml.orig
warriors/trisha/.vendor/triton-constraint-circuit/Cargo.toml.orig
cyb/evy/forks/bevy_transform/Cargo.toml.orig

Graph