weida 0.1.0-alpha.2

QUIC-native messaging framework: runtime, native QUIC transport, Req/Rep, Push/Pull, Pub/Sub, PAIR, SURVEY and BUS
Documentation
[package]
name = "weida"
description = "QUIC-native messaging framework: runtime, native QUIC transport, Req/Rep, Push/Pull, Pub/Sub, PAIR, SURVEY and BUS"
edition.workspace = true
rust-version.workspace = true
version.workspace = true
license.workspace = true
repository.workspace = true
homepage.workspace = true
keywords.workspace = true
categories.workspace = true

[features]
default = ["generate"]
# `Identity::generate`: self-signed identities for pinning. Off for callers
# that only ever load certificates issued elsewhere.
generate = ["dep:rcgen"]
# `weida::blocking`: the synchronous facade over the same engine, for a caller
# with no executor (B-194). Off by default, like every other library's in this
# tree, because an application that has a reactor wants the async surface.
blocking = ["dep:futures"]

[dependencies]
weida-core.workspace = true
weida-protocol.workspace = true
# The reactor, the resolver and the local-transport OS hygiene. Nothing in
# `weida` calls `tokio::spawn`, `tokio::time` or `lookup_host`: it all goes
# through this crate's `Exec`
# (`docs/decisions/0013-competitor-libraries.md` ยง4.2).
weida-runtime.workspace = true
quinn.workspace = true
tokio.workspace = true
bytes.workspace = true
futures-io.workspace = true
tracing.workspace = true
rand.workspace = true
rustls-pki-types.workspace = true
# Both already in the tree through rustls: the fingerprint needs a SPKI parser
# and a SHA-256, and these are the ones rustls links anyway.
rustls-webpki.workspace = true
ring.workspace = true
rcgen = { workspace = true, optional = true }
# The blocking facade drives this crate's own futures on the calling thread
# with `futures::executor::block_on`; the async surface needs none of it.
futures = { workspace = true, optional = true }

[dev-dependencies]
# Tests, examples and benches generate throwaway identities even when a
# downstream build turns the feature off.
weida = { path = ".", features = ["generate"] }
tracing-subscriber.workspace = true
# Examples stream stdin/stdout; the library itself needs no stdio.
tokio = { workspace = true, features = ["io-std"] }
criterion.workspace = true
futures.workspace = true

# `weida send|request|sub|serve` (B-060). `serve` mints a self-signed identity
# when no `--identity` file is given, so the binary needs the `generate`
# feature; a downstream build with the feature off skips it rather than
# failing to compile.
[[bin]]
name = "weida"
required-features = ["generate"]

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

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

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

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

# What per-subscriber fan-out costs at width (B-247): the number the guide's
# C8B arithmetic rests on.
[[bench]]
name = "fanout"
harness = false

[lints.rust]
unsafe_code = "forbid"