[package] name = "iroh" version = "0.28.1" edition = "2021" readme = "README.md" description = "A toolkit for building distributed applications" license = "MIT OR Apache-2.0" authors = ["dignifiedquire ", "n0 team"] repository = "https://github.com/n0-computer/iroh" keywords = ["networking", "p2p", "holepunching", "ipfs"] # Sadly this also needs to be updated in .github/workflows/ci.yml rust-version = "1.76" [lints] workspace = true [dependencies] anyhow = { version = "1" } async-channel = "2.3.1" bao-tree = { version = "0.13", features = ["tokio_fsm"], default-features = false } bytes = "1.7" derive_more = { version = "1.0.0", features = ["debug", "display", "from", "try_into", "from_str"] } futures-buffered = "0.2.4" futures-lite = "2.3" futures-util = "0.3" genawaiter = { version = "0.99", default-features = false, features = ["futures03"] } hex = { version = "0.4.3" } iroh-blobs = { version = "0.28.0", features = ["downloader"] } iroh-base = { version = "0.28.0", features = ["key"] } iroh-io = { version = "0.6.0", features = ["stats"] } iroh-metrics = { version = "0.28.0", optional = true } iroh-net = { version = "0.28.1", features = ["discovery-local-network"] } iroh-router = { version = "0.28.0" } nested_enum_utils = "0.1.0" num_cpus = { version = "1.15.0" } portable-atomic = "1" iroh-docs = { version = "0.28.0" } iroh-gossip = "0.28.1" parking_lot = "0.12.1" postcard = { version = "1", default-features = false, features = ["alloc", "use-std", "experimental-derive"] } quic-rpc = { version = "0.14", default-features = false, features = ["flume-transport", "quinn-transport"] } quic-rpc-derive = { version = "0.14" } quinn = { package = "iroh-quinn", version = "0.12" } rand = "0.8" serde = { version = "1", features = ["derive"] } strum = { version = "0.25", features = ["derive"] } thiserror = "1" tempfile = "3.4" tokio = { version = "1", features = ["io-util", "rt"] } tokio-stream = "0.1" tokio-util = { version = "0.7", features = ["codec", "io-util", "io", "time"] } tracing = "0.1" walkdir = "2" # Examples clap = { version = "4", features = ["derive"], optional = true } indicatif = { version = "0.17", features = ["tokio"], optional = true } ref-cast = "1.0.23" console = { version = "0.15.5", optional = true } # Documentation tests url = { version = "2.5.0", features = ["serde"] } serde-error = "0.1.3" [features] default = ["metrics", "fs-store"] metrics = ["iroh-metrics", "iroh-blobs/metrics"] fs-store = ["iroh-blobs/fs-store"] test = [] examples = ["dep:clap", "dep:indicatif"] discovery-local-network = ["iroh-net/discovery-local-network", "examples", "dep:console"] discovery-pkarr-dht = ["iroh-net/discovery-pkarr-dht"] test-utils = ["iroh-net/test-utils"] [dev-dependencies] anyhow = { version = "1" } genawaiter = { version = "0.99", features = ["futures03"] } iroh = { path = ".", features = ["test-utils"] } iroh-test = "0.28.0" proptest = "1.2.0" rand_chacha = "0.3.1" regex = { version = "1.7.1", features = ["std"] } serde_json = "1.0.107" testdir = "0.9.1" testresult = "0.4.0" tokio = { version = "1", features = ["macros", "io-util", "rt"] } tracing-subscriber = { version = "0.3", features = ["env-filter"] } [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "iroh_docsrs"] [[example]] name = "hello-world-provide" [[example]] name = "hello-world-fetch" [[example]] name = "collection-provide" [[example]] name = "collection-fetch" [[example]] name = "rpc" required-features = ["examples"] [[example]] name = "client" required-features = ["examples"] [[example]] name = "custom-protocol" required-features = ["examples"] [[example]] name = "local-swarm-discovery" required-features = ["discovery-local-network"]