[package] name = "libp2p" edition = "2021" rust-version = "1.65.0" description = "Peer-to-peer networking library" version = "0.51.0" authors = ["Parity Technologies "] license = "MIT" repository = "https://github.com/libp2p/rust-libp2p" keywords = ["peer-to-peer", "libp2p", "networking"] categories = ["network-programming", "asynchronous"] [features] full = [ "async-std", "autonat", "dcutr", "deflate", "dns", "ecdsa", "floodsub", "gossipsub", "identify", "kad", "mdns", "metrics", "mplex", "noise", "ping", "plaintext", "pnet", "quic", "macros", "relay", "rendezvous", "request-response", "rsa", "secp256k1", "serde", "tcp", "tls", "tokio", "uds", "wasm-bindgen", "wasm-ext", "wasm-ext-websocket", "webrtc", "websocket", "yamux", ] async-std = ["libp2p-swarm/async-std", "libp2p-mdns?/async-io", "libp2p-tcp?/async-io", "libp2p-dns?/async-std", "libp2p-quic?/async-std"] autonat = ["dep:libp2p-autonat"] dcutr = ["dep:libp2p-dcutr", "libp2p-metrics?/dcutr"] deflate = ["dep:libp2p-deflate"] dns = ["dep:libp2p-dns"] ecdsa = ["libp2p-core/ecdsa"] floodsub = ["dep:libp2p-floodsub"] gossipsub = ["dep:libp2p-gossipsub", "libp2p-metrics?/gossipsub"] identify = ["dep:libp2p-identify", "libp2p-metrics?/identify"] kad = ["dep:libp2p-kad", "libp2p-metrics?/kad"] macros = ["libp2p-swarm/macros"] mdns = ["dep:libp2p-mdns"] metrics = ["dep:libp2p-metrics"] mplex = ["dep:libp2p-mplex"] noise = ["dep:libp2p-noise"] ping = ["dep:libp2p-ping", "libp2p-metrics?/ping"] plaintext = ["dep:libp2p-plaintext"] pnet = ["dep:libp2p-pnet"] quic = ["dep:libp2p-quic"] relay = ["dep:libp2p-relay", "libp2p-metrics?/relay"] rendezvous = ["dep:libp2p-rendezvous"] request-response = ["dep:libp2p-request-response"] rsa = ["libp2p-core/rsa"] secp256k1 = ["libp2p-core/secp256k1"] serde = ["libp2p-core/serde", "libp2p-kad?/serde", "libp2p-gossipsub?/serde"] tcp = ["dep:libp2p-tcp"] tls = ["dep:libp2p-tls"] tokio = ["libp2p-swarm/tokio", "libp2p-mdns?/tokio", "libp2p-tcp?/tokio", "libp2p-dns?/tokio", "libp2p-quic?/tokio", "libp2p-webrtc?/tokio"] uds = ["dep:libp2p-uds"] wasm-bindgen = ["futures-timer/wasm-bindgen", "instant/wasm-bindgen", "getrandom/js", "libp2p-swarm/wasm-bindgen"] wasm-ext = ["dep:libp2p-wasm-ext"] wasm-ext-websocket = ["wasm-ext", "libp2p-wasm-ext?/websocket"] webrtc = ["dep:libp2p-webrtc", "libp2p-webrtc?/pem"] websocket = ["dep:libp2p-websocket"] yamux = ["dep:libp2p-yamux"] [dependencies] bytes = "1" futures = "0.3.26" futures-timer = "3.0.2" # Explicit dependency to be used in `wasm-bindgen` feature getrandom = "0.2.3" # Explicit dependency to be used in `wasm-bindgen` feature instant = "0.1.11" # Explicit dependency to be used in `wasm-bindgen` feature libp2p-autonat = { version = "0.10.0", path = "protocols/autonat", optional = true } libp2p-core = { version = "0.39.0", path = "core" } libp2p-dcutr = { version = "0.9.0", path = "protocols/dcutr", optional = true } libp2p-floodsub = { version = "0.42.0", path = "protocols/floodsub", optional = true } libp2p-identify = { version = "0.42.0", path = "protocols/identify", optional = true } libp2p-kad = { version = "0.43.0", path = "protocols/kad", optional = true } libp2p-metrics = { version = "0.12.0", path = "misc/metrics", optional = true } libp2p-mplex = { version = "0.39.0", path = "muxers/mplex", optional = true } libp2p-noise = { version = "0.42.0", path = "transports/noise", optional = true } libp2p-ping = { version = "0.42.0", path = "protocols/ping", optional = true } libp2p-plaintext = { version = "0.39.0", path = "transports/plaintext", optional = true } libp2p-pnet = { version = "0.22.2", path = "transports/pnet", optional = true } libp2p-relay = { version = "0.15.0", path = "protocols/relay", optional = true } libp2p-rendezvous = { version = "0.12.0", path = "protocols/rendezvous", optional = true } libp2p-request-response = { version = "0.24.0", path = "protocols/request-response", optional = true } libp2p-swarm = { version = "0.42.0", path = "swarm" } libp2p-uds = { version = "0.37.0", path = "transports/uds", optional = true } libp2p-wasm-ext = { version = "0.39.0", path = "transports/wasm-ext", optional = true } libp2p-yamux = { version = "0.43.0", path = "muxers/yamux", optional = true } multiaddr = { version = "0.17.0" } parking_lot = "0.12.0" pin-project = "1.0.0" smallvec = "1.6.1" [target.'cfg(not(any(target_os = "emscripten", target_os = "wasi", target_os = "unknown")))'.dependencies] libp2p-deflate = { version = "0.39.0", path = "transports/deflate", optional = true } libp2p-dns = { version = "0.39.0", path = "transports/dns", optional = true } libp2p-mdns = { version = "0.43.0", path = "protocols/mdns", optional = true } libp2p-quic = { version = "0.7.0-alpha.2", path = "transports/quic", optional = true } libp2p-tcp = { version = "0.39.0", path = "transports/tcp", optional = true } libp2p-tls = { version = "0.1.0-alpha.2", path = "transports/tls", optional = true } libp2p-webrtc = { version = "0.4.0-alpha.2", path = "transports/webrtc", optional = true } libp2p-websocket = { version = "0.41.0", path = "transports/websocket", optional = true } [target.'cfg(not(target_os = "unknown"))'.dependencies] libp2p-gossipsub = { version = "0.44.0", path = "protocols/gossipsub", optional = true } [dev-dependencies] async-std = { version = "1.6.2", features = ["attributes"] } async-trait = "0.1" either = "1.8.0" env_logger = "0.10.0" clap = { version = "4.0.13", features = ["derive"] } tokio = { version = "1.15", features = ["io-util", "io-std", "macros", "rt", "rt-multi-thread"] } libp2p-mplex = { path = "muxers/mplex" } libp2p-noise = { path = "transports/noise" } libp2p-tcp = { path = "transports/tcp", features = ["tokio"] } [workspace] members = [ "core", "misc/metrics", "misc/multistream-select", "misc/rw-stream-sink", "misc/keygen", "misc/prost-codec", "misc/quickcheck-ext", "muxers/mplex", "muxers/yamux", "muxers/test-harness", "protocols/dcutr", "protocols/autonat", "protocols/floodsub", "protocols/gossipsub", "protocols/rendezvous", "protocols/identify", "protocols/kad", "protocols/mdns", "protocols/ping", "protocols/relay", "protocols/request-response", "swarm", "swarm-derive", "interop-tests", "transports/deflate", "transports/dns", "transports/noise", "transports/tls", "transports/plaintext", "transports/pnet", "transports/quic", "transports/tcp", "transports/uds", "transports/websocket", "transports/wasm-ext", "transports/webrtc", "interop-tests" ] [[example]] name = "chat" required-features = ["full"] [[example]] name = "chat-tokio" required-features = ["full"] [[example]] name = "file-sharing" required-features = ["full"] [[example]] name = "gossipsub-chat" required-features = ["full"] [[example]] name = "ipfs-private" required-features = ["full"] [[example]] name = "ipfs-kad" required-features = ["full"] [[example]] name = "ping" required-features = ["full"] [[example]] name = "mdns-passive-discovery" required-features = ["full"] [[example]] name = "distributed-key-value-store" required-features = ["full"] # Passing arguments to the docsrs builder in order to properly document cfg's. # More information: https://docs.rs/about/builds#cross-compiling [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] rustc-args = ["--cfg", "docsrs"]