[workspace]
members = [".", "wasm", "fuzz"]
resolver = "3"
[workspace.package]
edition = "2024"
rust-version = "1.96"
license = "MIT"
repository = "https://github.com/houseme/reed-solomon-erasure"
[workspace.dependencies]
cc = "1.2"
cfg_aliases = "0.2"
criterion = { version = "0.8.2", features = ["html_reports"] }
hashlink = { version = "0.12", default-features = false }
libc = "0.2"
libfuzzer-sys = "0.4"
libm = "0.2.16"
parking_lot = "0.12.5"
quickcheck = "1.1.0"
rand = "0.10.2"
rayon = "1.12"
rustfs-erasure-codec = { version = "8.0.0", path = "." }
smallvec = "1.15"
spin = { version = "0.12.2", default-features = false, features = ["once", "spin_mutex"] }
wasm-bindgen = "0.2.126"
wee_alloc = "0.4"
[workspace.lints.rust]
unsafe_op_in_unsafe_fn = "deny"
unused_lifetimes = "warn"
noop_method_call = "warn"
[workspace.lints.clippy]
all = "warn"
undocumented_unsafe_blocks = "warn"
[lints]
workspace = true
[package]
name = "rustfs-erasure-codec"
version = "8.0.0"
authors = ["Darren Ldl <darrenldldev@gmail.com>"]
edition.workspace = true
build = "build.rs"
exclude = [
".gitattributes",
".github",
".gitignore",
".travis.yml",
".typos.toml",
"appveyor.yml",
"bench_clean_compare.sh",
"benches",
"benchmarks",
"docs",
"fuzz",
"sage",
"scripts",
]
rust-version.workspace = true
description = "Rust implementation of Reed-Solomon erasure coding"
documentation = "https://docs.rs/rustfs-erasure-codec"
homepage = "https://github.com/houseme/reed-solomon-erasure"
repository.workspace = true
readme = "README.md"
keywords = ["reed-solomon", "erasure"]
categories = ["encoding"]
license.workspace = true
[features]
default = ["std"]
std = ["parking_lot", "rayon"]
simd-neon = ["cc", "libc"]
simd-ssse3 = ["cc", "libc"]
simd-avx2 = ["cc", "libc"]
simd-avx512 = ["cc", "libc"]
simd-gfni = ["cc", "libc"]
simd-vsx = []
simd-accel = ["simd-neon", "simd-ssse3", "simd-avx2", "simd-avx512", "simd-gfni", "simd-vsx"]
benchmark-metrics = []
[dependencies]
libc = { workspace = true, optional = true }
libm.workspace = true
hashlink.workspace = true
parking_lot = { workspace = true, optional = true }
rayon = { workspace = true, optional = true }
smallvec.workspace = true
spin.workspace = true
[dev-dependencies]
rand.workspace = true
quickcheck.workspace = true
criterion.workspace = true
[build-dependencies]
cc = { workspace = true, optional = true }
cfg_aliases = { workspace = true }
[[bench]]
name = "bandwidth"
harness = false
[[bench]]
name = "throughput_matrix"
harness = false
[[bench]]
name = "galois_backend"
harness = false