polytune 0.2.0-alpha.4

Maliciously-Secure Multi-Party Computation (MPC) Engine using Authenticated Garbling
Documentation
[workspace]
members = [
    "crates/polytune-test-utils",
    "crates/polytune-server-core",
    "crates/polytune-http-server",
    "examples/api-integration",
    "examples/http-multi-server-channels",
    "examples/http-single-server-channels",
    "examples/wasm-http-channels",
    "examples/sql-integration",
]

[workspace.lints.rust]
missing_docs = "warn"

[workspace.lints.clippy]
unwrap_used = "warn"

[workspace.lints.rustdoc]
broken_intra_doc_links = "warn"

[package]
name = "polytune"
version = "0.2.0-alpha.4"
edition = "2024"
rust-version = "1.89.0"
description = "Maliciously-Secure Multi-Party Computation (MPC) Engine using Authenticated Garbling"
repository = "https://github.com/sine-fdn/polytune/"
homepage = "https://polytune.org/"
license = "MIT"
categories = ["cryptography", "security"]
keywords = [
    "secure-computation",
    "garbled-circuits",
    "circuit-description",
    "smpc",
    "mpc",
]
# we use one bench binary with `benches/main.rs` as the starting point which
# executes benches in various modules under `benches/`. Those modules should
# not be automatically detected as separate benchmarks.
autobenches = false

[package.metadata.docs.rs]
rustdoc-args = ["--generate-link-to-definition"]

[lib]
bench = false

[features]
# For internal use only!
# To work around a limitation in criterion, we define a "private" feature
# which we use to conditionally expose some otherwise private functions
# as public for benchmarking. The __ prefix results in docs.rs not listing
# this feature. 
__bench = []

[dependencies]
aes = "=0.9.0-rc.2"
bincode = { version = "2.0.1", default-features = false, features = ["std", "serde"] }
blake3 = "1.5.0"
bytemuck = { version = "1.24.0", features = ["latest_stable_rust"] }
chacha20poly1305 = "0.10.1"
curve25519-dalek = { version = "4.1.0", features = ["rand_core"] }
futures-util = { version = "0.3.31", default-features = false, features = [
    "alloc",
    "async-await-macro",
] }
garble_lang = "0.7.0-alpha.1"
hybrid-array = { version = "0.4.5", features = ["bytemuck"] }
rand = "0.9.2"
rand_chacha = "0.9.0"
rand_core_0_6 = { package = "rand_core", version = "0.6" }
seq-macro = "0.3.6"
serde = { version = "1.0.228", features = ["derive"] }
subtle = "2.6.1"
tempfile = "3.23.0"
thiserror = "2.0.16"
tokio = { version = "1.48.0", features = ["macros", "sync", "time"] }
tracing = "0.1.43"
wide = { version = "0.7.33", features = ["serde"] }

[target.'cfg(target_arch = "wasm32")'.dependencies]
# For wasm compatibility, we need to enable the getrandom js features
# currently both of these versions are present in the dependency tree
# Furthermore RUSTFLAGS needs to be set to
# RUSTFLAGS='--cfg getrandom_backend="wasm_js"'
# when compiling for wasm32-unknown-unknown
getrandom_0_2 = { package = "getrandom", version = "0.2.16", features = ["js"] }
getrandom_0_3 = { package = "getrandom", version = "0.3", features = [
    "wasm_js",
] }

[target.'cfg(any(target_arch = "aarch64", target_arch = "loongarch64", target_arch = "x86", target_arch = "x86_64"))'.dependencies]
cpufeatures = "0.2.17"

[dev-dependencies]
criterion = { version = "0.8.1", features = ["async_tokio"] }
polytune-test-utils = { path = "crates/polytune-test-utils" }
proptest = "1.9.0"
tokio = { version = "1.48.0", features = ["full"] }
tracing-subscriber = { version = "0.3.22", features = ["env-filter"] }

[[bench]]
name = "main"
harness = false
required-features = ["__bench"]

[package.metadata.cargo-machete]
# we need the hybrid-array dependency to enable the bytemuck feature
ignored = ["hybrid-array"]

# Use this profile when profiling polytune with e.g. samply or perf
[profile.debug-release]
debug = true
inherits = "release"