[package]
edition = "2024"
name = "rzmq"
version = "0.5.21"
authors = [
"Excerion Sun <dev@excsn.com>",
"Norm O <normo.pub@gmail.com>",
]
build = false
publish = true
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "High performance, CPU and memory efficient, fully asynchronous, safe pure-Rust implementation of ZeroMQ (ØMQ) messaging with io_uring and TCP Cork acceleration on Linux."
homepage = "https://github.com/excsn/rzmq"
readme = "README.md"
keywords = [
"zeromq",
"messaging",
"async",
"network",
"io_uring",
]
categories = [
"asynchronous",
"network-programming",
"concurrency",
]
license = "MPL-2.0"
repository = "https://github.com/excsn/rzmq"
resolver = "2"
[features]
bench_external_clients = []
curve = ["dep:dryoc"]
default = [
"ipc",
"inproc",
"plain",
]
diagnostics = []
full = [
"default",
"ipc",
"inproc",
"plain",
"noise_xx",
"curve",
]
full-linux = [
"full",
"io-uring",
]
inproc = []
io-uring = [
"dep:eventfd",
"dep:io-uring",
"dep:slab",
]
ipc = []
noise_xx = [
"dep:snow",
"dep:x25519-dalek",
]
plain = []
[lib]
name = "rzmq"
path = "src/lib.rs"
[[example]]
name = "dealrtr_multiclient"
path = "examples/dealrtr_multiclient.rs"
[[example]]
name = "dealrtr_multitask"
path = "examples/dealrtr_multitask.rs"
[[example]]
name = "iouring_basic"
path = "examples/iouring_basic.rs"
required-features = ["io-uring"]
[[example]]
name = "iouring_dealrtr_multiclient"
path = "examples/iouring_dealrtr_multiclient.rs"
required-features = ["io-uring"]
[[example]]
name = "iouring_dealrtr_multitask"
path = "examples/iouring_dealrtr_multitask.rs"
required-features = ["io-uring"]
[[example]]
name = "iouring_throughput"
path = "examples/iouring_throughput.rs"
required-features = ["io-uring"]
[[example]]
name = "noise_xx_push_pull"
path = "examples/noise_xx_push_pull.rs"
required-features = ["noise_xx"]
[[example]]
name = "plain_req_rep"
path = "examples/plain_req_rep.rs"
[[example]]
name = "pub_sub_example"
path = "examples/pub_sub_example.rs"
[[example]]
name = "push_pull_example"
path = "examples/push_pull_example.rs"
[[example]]
name = "req_rep_flurry"
path = "examples/req_rep_flurry.rs"
[[test]]
name = "common"
path = "tests/common.rs"
[[test]]
name = "dealer_dealer"
path = "tests/dealer_dealer.rs"
[[test]]
name = "dealer_rep"
path = "tests/dealer_rep.rs"
[[test]]
name = "dealer_router"
path = "tests/dealer_router.rs"
[[test]]
name = "dealer_router_advanced"
path = "tests/dealer_router_advanced.rs"
[[test]]
name = "dns"
path = "tests/dns.rs"
[[test]]
name = "fsm_violations"
path = "tests/fsm_violations.rs"
[[test]]
name = "inproc_minimal"
path = "tests/inproc_minimal.rs"
required-features = ["inproc"]
[[test]]
name = "io_uring_resource_exhaustion"
path = "tests/io_uring_resource_exhaustion.rs"
required-features = ["io-uring"]
[[test]]
name = "lifecycle"
path = "tests/lifecycle.rs"
[[test]]
name = "maxmsgsize"
path = "tests/maxmsgsize.rs"
[[test]]
name = "mre_ingress_deadlock"
path = "tests/mre_ingress_deadlock.rs"
[[test]]
name = "pub_sub"
path = "tests/pub_sub.rs"
[[test]]
name = "push_pull"
path = "tests/push_pull.rs"
[[test]]
name = "push_pull_lifecycle"
path = "tests/push_pull_lifecycle.rs"
[[test]]
name = "push_pull_load_balance"
path = "tests/push_pull_load_balance.rs"
[[test]]
name = "reconnect_tests"
path = "tests/reconnect_tests.rs"
[[test]]
name = "req_rep"
path = "tests/req_rep.rs"
[[test]]
name = "req_rep_advanced"
path = "tests/req_rep_advanced.rs"
[[test]]
name = "req_rep_repro"
path = "tests/req_rep_repro.rs"
[[test]]
name = "req_router"
path = "tests/req_router.rs"
[[test]]
name = "router_router"
path = "tests/router_router.rs"
[[test]]
name = "router_scaling"
path = "tests/router_scaling.rs"
[[test]]
name = "security_curve"
path = "tests/security_curve.rs"
required-features = ["curve"]
[[test]]
name = "security_noise_xx"
path = "tests/security_noise_xx.rs"
required-features = ["noise_xx"]
[[test]]
name = "security_plain"
path = "tests/security_plain.rs"
required-features = ["plain"]
[[test]]
name = "shutdown_race"
path = "tests/shutdown_race.rs"
[[test]]
name = "soak_tests"
path = "tests/soak_tests.rs"
[[test]]
name = "socket_options"
path = "tests/socket_options.rs"
[[test]]
name = "stress"
path = "tests/stress.rs"
[[test]]
name = "subscription_trie_contention"
path = "tests/subscription_trie_contention.rs"
[[test]]
name = "tcp_corking"
path = "tests/tcp_corking.rs"
[[test]]
name = "transport_failures"
path = "tests/transport_failures.rs"
[[bench]]
name = "dealer_router_throughput"
path = "benches/dealer_router_throughput.rs"
harness = false
[[bench]]
name = "generic_client_benchmark"
path = "benches/generic_client_benchmark.rs"
harness = false
required-features = ["bench_external_clients"]
[[bench]]
name = "pub_sub_throughput"
path = "benches/pub_sub_throughput.rs"
harness = false
[[bench]]
name = "pull_throughput"
path = "benches/pull_throughput.rs"
harness = false
[[bench]]
name = "req_rep_throughput"
path = "benches/req_rep_throughput.rs"
harness = false
[dependencies.arc-swap]
version = "^1"
[dependencies.async-recursion]
version = "^1.0"
[dependencies.async-trait]
version = "^0.1.88"
[dependencies.atomic_float]
version = "^1"
[dependencies.bitflags]
version = "^2.4"
[dependencies.bytes]
version = "^1.4"
[dependencies.dashmap]
version = "^5.5"
[dependencies.dryoc]
version = "^0.7"
optional = true
[dependencies.eventfd]
version = "^0.2"
optional = true
[dependencies.fibre]
version = "^0.5"
[dependencies.futures]
version = "^0.3"
[dependencies.hex]
version = "0.4.3"
[dependencies.io-uring]
version = "^0.7"
optional = true
[dependencies.libc]
version = "0.2"
[dependencies.linked-hash-map]
version = "^0.5.6"
[dependencies.once_cell]
version = "^1"
[dependencies.parking_lot]
version = "^0.12"
[dependencies.rand]
version = "^0.9"
[dependencies.slab]
version = "0.4"
optional = true
[dependencies.snow]
version = "^0.9"
optional = true
[dependencies.socket2]
version = "0.6"
features = ["all"]
[dependencies.thiserror]
version = "^2.0"
[dependencies.tokio]
version = "^1"
features = [
"fs",
"rt",
"rt-multi-thread",
"macros",
"sync",
"net",
"time",
"io-util",
]
[dependencies.tokio-util]
version = "^0.7"
features = ["codec"]
[dependencies.tracing]
version = "^0.1"
[dependencies.x25519-dalek]
version = "^2.0"
features = ["static_secrets"]
optional = true
package = "xs_x25519-dalek"
[dependencies.xs_foundation]
version = "0.4"
features = ["collections"]
default-features = false
[dependencies.zeroize]
version = "1.8.2"
[dev-dependencies.anyhow]
version = "^1"
[dev-dependencies.bench_matrix]
version = "^0"
[dev-dependencies.criterion]
version = "0.8"
features = ["async_tokio"]
[dev-dependencies.futures-intrusive]
version = "^0"
[dev-dependencies.rstest]
version = "0.26.1"
[dev-dependencies.serial_test]
version = "^3"
[dev-dependencies.tokio-test]
version = "^0.4"
[dev-dependencies.tracing-subscriber]
version = "^0.3"
features = ["env-filter"]