CI / check (macos-latest, 1.93.0) (push) Canceled after 0s
CI / check (macos-latest, stable) (push) Canceled after 0s
CI / check (ubuntu-latest, 1.93.0) (push) Canceled after 0s
CI / check (ubuntu-latest, stable) (push) Canceled after 0s
CI / check (windows-latest, 1.93.0) (push) Canceled after 0s
CI / check (windows-latest, stable) (push) Canceled after 0s
CI / cargo deny (push) Canceled after 0s
CI / cargo audit (push) Canceled after 0s
CI / cargo semver-checks (push) Canceled after 0s
CI / coverage (push) Canceled after 0s
CI / examples build (push) Canceled after 0s
CI / stateright BFS N=3 K=2 (push) Canceled after 0s
Rewrites remaining github.com / git.sr.ht references to git.swaits.com, translating GitHub URL shapes to Gitea's (/blob/<ref>/ -> /src/branch/<ref>/, /tree/<tag> -> /src/tag/<tag>, /actions/workflows/X -> /actions?workflow=X, /edit/ -> /_edit/). Left pointing at GitHub on purpose: pull-request links (PRs were not migrated) and GitHub-only surfaces Gitea lacks (security advisories, discussions).
170 lines
5.0 KiB
TOML
170 lines
5.0 KiB
TOML
[package]
|
|
name = "iroh-gossip-rendezvous"
|
|
version = "0.2.2"
|
|
edition = "2024"
|
|
rust-version = "1.93.0"
|
|
authors = ["Stephen Waits <steve@waits.net>"]
|
|
license = "MIT"
|
|
description = "Passphrase-based rendezvous for iroh-gossip swarms via Mainline DHT"
|
|
repository = "https://git.swaits.com/swaits/iroh-gossip-rendezvous"
|
|
homepage = "https://git.swaits.com/swaits/iroh-gossip-rendezvous"
|
|
keywords = ["iroh", "gossip", "dht", "mainline", "rendezvous"]
|
|
categories = ["network-programming"]
|
|
readme = "README.md"
|
|
exclude = [
|
|
# Dev workflow / local tooling — never ship to crates.io.
|
|
".jj/",
|
|
".github/",
|
|
".cargo/",
|
|
".config/",
|
|
".claude/",
|
|
"deny.toml",
|
|
"justfile",
|
|
"CODEOWNERS",
|
|
# cargo-mutants output (gitignored but guard against leakage).
|
|
"mutants.out",
|
|
"mutants.out/**",
|
|
"mutants.out.old",
|
|
"mutants.out.old/**",
|
|
# cargo-fuzz workspace is a separate crate; corpus/artifacts are huge.
|
|
"fuzz/corpus",
|
|
"fuzz/corpus/**",
|
|
"fuzz/artifacts",
|
|
"fuzz/artifacts/**",
|
|
"fuzz/target",
|
|
"fuzz/target/**",
|
|
# Coverage output.
|
|
"lcov.info",
|
|
"*.profraw",
|
|
"*.profdata",
|
|
]
|
|
|
|
[package.metadata.docs.rs]
|
|
all-features = true
|
|
rustdoc-args = ["--cfg", "docsrs"]
|
|
|
|
[features]
|
|
# Discrete-event simulator + test-support hooks that expose `pub(crate)`
|
|
# internals (InMemoryDht, DhtSlots, ProtoState, merge / wire helpers).
|
|
# Not part of the stable public API; may shift between 0.x releases.
|
|
sim = []
|
|
|
|
# Enables Kani bounded-model-checking proof harnesses (src/kani_proofs.rs).
|
|
# Off-by-default; only set when running `cargo kani`.
|
|
kani = []
|
|
|
|
# Makes Miri-incompatible tests (anything touching tokio I/O, the real
|
|
# Mainline DHT, or std::time::Instant-from-the-clock) opt-in. Enable with
|
|
# `cargo +nightly miri test --lib --features miri-compat`.
|
|
miri-compat = []
|
|
|
|
# Opt-in live tests against the real Mainline DHT. Flaky, network-dependent.
|
|
# Used by the nightly `mainline-live` CI lane only.
|
|
mainline-live = []
|
|
|
|
# Extension of the public Builder that accepts an injected DhtSlots trait
|
|
# object for integration tests. Off-by-default so the public API stays tight;
|
|
# tests re-enable it via `dev-dependencies`.
|
|
test-support = ["sim"]
|
|
|
|
[[example]]
|
|
name = "simulator"
|
|
required-features = ["sim"]
|
|
|
|
[[bench]]
|
|
name = "merge"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "crypto"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "wire"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "keys"
|
|
harness = false
|
|
|
|
[dependencies]
|
|
iroh = "=1.0.0-rc.0"
|
|
iroh-gossip = "0.99"
|
|
mainline = { version = "6", features = ["async"] }
|
|
# Crypto stack — several deps are pinned by transitive constraints. See
|
|
# `UPGRADING.md` or the release notes on any bump.
|
|
#
|
|
# * `ed25519-dalek = "=3.0.0-pre.7"`: matched to iroh 1.0.0-rc.0 / iroh-base 1.0.0-rc.0.
|
|
# * `chacha20poly1305 = 0.10`: 0.11 is `rc`. Same story.
|
|
# * `hkdf = 0.13`: works as of mainline 6.1.2, which loosened its `digest`
|
|
# pin to `0.11`. The HKDF-SHA256 KAT covers compatibility — bump only if
|
|
# it still passes byte-for-byte.
|
|
# * `rand = 0.9`: 0.10 is coordinated with iroh + bridge; hold until iroh bumps.
|
|
ed25519-dalek = "=3.0.0-pre.7"
|
|
chacha20poly1305 = "0.10"
|
|
hkdf = "0.13"
|
|
sha2 = "0.11"
|
|
blake3 = "1"
|
|
zeroize = { version = "1", features = ["derive"] }
|
|
rand = "0.9"
|
|
bytes = "1"
|
|
tokio = { version = "1", features = ["time", "sync", "rt", "macros"] }
|
|
tokio-util = { version = "0.7", features = ["rt"] }
|
|
futures-lite = "2"
|
|
tracing = "0.1"
|
|
thiserror = "2"
|
|
async-trait = "0.1"
|
|
# Provides the `#[mutants::skip]` attribute for targeted cargo-mutants
|
|
# exclusions on code paths that are fundamentally async + network-bound.
|
|
mutants = "0.0.4"
|
|
|
|
[dev-dependencies]
|
|
proptest = "1"
|
|
tokio = { version = "1", features = ["full", "test-util"] }
|
|
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
|
|
anyhow = "1"
|
|
clap = { version = "4", features = ["derive"] }
|
|
hex = "0.4"
|
|
criterion = { version = "0.8", features = ["html_reports"] }
|
|
arbitrary = { version = "1", features = ["derive"] }
|
|
hex-literal = "1"
|
|
stateright = "0.31"
|
|
|
|
[lints.rust]
|
|
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(kani)'] }
|
|
|
|
[lints.clippy]
|
|
pedantic = { level = "warn", priority = -1 }
|
|
nursery = { level = "warn", priority = -1 }
|
|
unwrap_used = "deny"
|
|
expect_used = "deny"
|
|
panic = "deny"
|
|
# Stylistic lints we don't want to fight:
|
|
similar_names = "allow"
|
|
module_name_repetitions = "allow"
|
|
missing_errors_doc = "allow"
|
|
missing_panics_doc = "allow"
|
|
cast_possible_truncation = "allow"
|
|
cast_sign_loss = "allow"
|
|
cast_precision_loss = "allow"
|
|
cast_possible_wrap = "allow"
|
|
redundant_pub_crate = "allow"
|
|
multiple_crate_versions = "allow"
|
|
doc_markdown = "allow"
|
|
collapsible_if = "allow"
|
|
if_not_else = "allow"
|
|
map_unwrap_or = "allow"
|
|
missing_const_for_fn = "allow"
|
|
needless_pass_by_value = "allow"
|
|
redundant_clone = "allow"
|
|
significant_drop_tightening = "allow"
|
|
single_match_else = "allow"
|
|
struct_field_names = "allow"
|
|
too_many_lines = "allow"
|
|
must_use_candidate = "allow"
|
|
# Fires on Rust 1.95+ suggesting `Duration::from_mins(5)`, but `from_mins`
|
|
# was only stabilized in 1.95 — using it would break our 1.93.0 MSRV.
|
|
# Allow crate-wide until MSRV reaches 1.95.
|
|
duration_suboptimal_units = "allow"
|
|
too_long_first_doc_paragraph = "allow"
|