iroh-quinn 0.13.0

Versatile QUIC transport protocol implementation
Documentation
[package]
name = "iroh-quinn"
version = "0.13.0"
license.workspace = true
repository.workspace = true
description = "Versatile QUIC transport protocol implementation"
readme = "../README.md"
keywords.workspace = true
categories.workspace = true
workspace = ".."
edition.workspace = true
rust-version.workspace = true


[features]
# NOTE: Please keep this in sync with the feature list in `.github/workflows/codecov.yml`, see
# comment in that file for more information.
default = ["log", "platform-verifier", "runtime-tokio", "rustls-ring"]
# Enables `Endpoint::client` and `Endpoint::server` conveniences
aws-lc-rs = ["proto/aws-lc-rs"]
aws-lc-rs-fips = ["proto/aws-lc-rs-fips"]
# Records how long locks are held, and warns if they are held >= 1ms
lock_tracking = []
# Provides `ClientConfig::with_platform_verifier()` convenience method
platform-verifier = ["proto/platform-verifier"]
# For backwards compatibility, `rustls` forwards to `rustls-ring`
rustls = ["rustls-ring"]
# Enable rustls with the `aws-lc-rs` crypto provider
rustls-aws-lc-rs = ["dep:rustls", "aws-lc-rs", "proto/rustls-aws-lc-rs", "proto/aws-lc-rs"]
rustls-aws-lc-rs-fips = ["dep:rustls", "aws-lc-rs-fips", "proto/rustls-aws-lc-rs-fips", "proto/aws-lc-rs-fips"]
# Enable rustls with the `ring` crypto provider
rustls-ring = ["dep:rustls", "ring", "proto/rustls-ring", "proto/ring"]
# Enable the `ring` crypto provider.
# Outside wasm*-unknown-unknown targets, this enables `Endpoint::client` and `Endpoint::server` conveniences.
ring = ["proto/ring"]
runtime-tokio = ["tokio/time", "tokio/rt", "tokio/net"]
runtime-async-std = ["async-io", "async-std"]
runtime-smol = ["async-io", "smol"]

# Configure `tracing` to log events via `log` if no `tracing` subscriber exists.
log = ["tracing/log", "proto/log", "udp/log"]
# Enable rustls logging
rustls-log = ["rustls?/logging"]

[dependencies]
async-io = { workspace = true, optional = true }
async-std = { workspace = true, optional = true }
bytes = { workspace = true }
# Enables futures::io::{AsyncRead, AsyncWrite} support for streams
futures-io = { workspace = true, optional = true }
rustc-hash = { workspace = true }
pin-project-lite = { workspace = true }
proto = { package = "iroh-quinn-proto", path = "../quinn-proto", version = "0.13.0", default-features = false }
rustls = { workspace = true, optional = true }
smol = { workspace = true, optional = true }
thiserror = { workspace = true }
tracing =  { workspace = true }
tokio = { workspace = true }
udp = { package = "iroh-quinn-udp", path = "../quinn-udp", version = "0.5", default-features = false, features = ["tracing"] }

# Fix minimal dependencies for indirect deps
async-global-executor = { workspace = true, optional = true }
async-fs = { workspace = true, optional = true }
async-executor = { workspace = true, optional = true }

[target.'cfg(not(all(target_family = "wasm", target_os = "unknown")))'.dependencies]
socket2 = { workspace = true }

[target.'cfg(all(target_family = "wasm", target_os = "unknown"))'.dependencies]
web-time = { workspace = true }

[dev-dependencies]
anyhow = { workspace = true }
crc = { workspace = true }
bencher = { workspace = true }
directories-next = { workspace = true }
rand = { workspace = true }
rcgen = { workspace = true }
rustls-pemfile = { workspace = true }
clap = { workspace = true }
tokio = { workspace = true, features = ["rt", "rt-multi-thread", "time", "macros"] }
tracing-subscriber = { workspace = true }
tracing-futures = { workspace = true }
url = { workspace = true }
tokio-stream = "0.1.15"

[build-dependencies]
cfg_aliases = { workspace = true }

[[example]]
name = "server"
required-features = ["rustls-ring"]

[[example]]
name = "client"
required-features = ["rustls-ring"]

[[example]]
name = "insecure_connection"
required-features = ["rustls-ring"]

[[example]]
name = "single_socket"
required-features = ["rustls-ring"]

[[example]]
name = "connection"
required-features = ["rustls-ring"]

[[bench]]
name = "bench"
harness = false
required-features = ["rustls-ring"]

[package.metadata.docs.rs]
# all non-default features except fips (cannot build on docs.rs environment)
features = ["lock_tracking", "rustls-aws-lc-rs", "rustls-ring", "runtime-tokio", "runtime-async-std", "runtime-smol", "log", "rustls-log"]