[package]
name = "iroh-gossip"
version = "0.96.0"
edition = "2021"
readme = "README.md"
description = "gossip messages over broadcast trees"
license = "MIT/Apache-2.0"
authors = ["n0 team"]
repository = "https://github.com/n0-computer/iroh-gossip"
# Sadly this also needs to be updated in .github/workflows/ci.yml
rust-version = "1.89"
[lib]
crate-type = ["cdylib", "rlib"]
[lints]
workspace = true
[dependencies]
hemera = { package = "cyber-hemera", path = "../../hemera/rs" }
bytes = { version = "1.7", features = ["serde"] }
data-encoding = "2.6.0"
derive_more = { version = "2.0.1", features = [
"add",
"debug",
"deref",
"display",
"from",
"try_into",
"into",
] }
ed25519-dalek = { version = "3.0.0-pre.1", features = ["serde", "rand_core"] }
hex = "0.4.3"
indexmap = "2.0"
iroh-metrics = { version = "0.38", default-features = false }
iroh-base = { version = "0.96", default-features = false, features = ["key"] }
n0-future = "0.3"
postcard = { version = "1", default-features = false, features = [
"alloc",
"use-std",
"experimental-derive",
] }
rand = { version = "0.9.2", features = ["std_rng"] }
serde = { version = "1.0.164", features = ["derive"] }
# net dependencies (optional)
futures-lite = { version = "2.3", optional = true }
futures-concurrency = { version = "7.6.1", optional = true }
futures-util = { version = "0.3.30", optional = true }
iroh = { version = "0.96", default-features = false, optional = true }
tokio = { version = "1", optional = true, features = ["io-util", "sync"] }
tokio-util = { version = "0.7.12", optional = true, features = ["codec"] }
tracing = "0.1"
irpc = { version = "0.12.0", optional = true, default-features = false, features = [
"derive",
"stream",
"spans",
] }
n0-error = { version = "0.1", features = ["anyhow"] }
# rpc dependencies (optional)
quinn = { package = "iroh-quinn", version = "0.16.0", optional = true }
# test-utils dependencies (optional)
rand_chacha = { version = "0.9", optional = true }
humantime-serde = { version = "1.1.1", optional = true }
# simulator dependencies (optional)
clap = { version = "4", features = ["derive"], optional = true }
toml = { version = "0.9.8", optional = true }
tracing-subscriber = { version = "0.3", features = [
"env-filter",
], optional = true }
serde_json = { version = "1", optional = true }
rayon = { version = "1.10.0", optional = true }
comfy-table = { version = "7.1.4", optional = true }
[dev-dependencies]
tokio = { version = "1", features = [
"io-util",
"sync",
"rt",
"macros",
"net",
"fs",
] }
clap = { version = "4", features = ["derive"] }
humantime-serde = { version = "1.1.1" }
iroh = { version = "0.96", default-features = false, features = [
"metrics",
"test-utils",
] }
rand_chacha = "0.9"
testresult = "0.4.1"
tracing-subscriber = { version = "0.3.20", features = ["env-filter"] }
n0-tracing-test = "0.3"
url = "2.4.0"
serde-byte-array = "0.1.2"
[features]
default = ["net", "metrics"]
net = [
"dep:irpc",
"dep:futures-lite",
"dep:iroh",
"dep:tokio",
"dep:tokio-util",
"dep:futures-util",
"dep:futures-concurrency",
]
rpc = [
"dep:irpc",
"dep:tokio",
"dep:quinn",
"irpc/rpc",
"irpc/quinn_endpoint_setup",
]
test-utils = ["dep:rand_chacha", "dep:humantime-serde"]
simulator = [
"test-utils",
"dep:tracing-subscriber",
"dep:toml",
"dep:clap",
"dep:serde_json",
"dep:rayon",
"dep:comfy-table",
]
metrics = ["iroh-metrics/metrics"]
examples = ["net"]
test
name = "sim"
path = "tests/sim.rs"
required-features = ["test-utils"]
bin
name = "sim"
required-features = ["simulator"]
example
name = "chat"
required-features = ["examples"]
example
name = "setup"
required-features = ["examples"]
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "iroh_docsrs"]