[package]
name = "solana-gossip"
documentation = "https://docs.rs/solana-gossip"
version = { workspace = true }
authors = { workspace = true }
description = { workspace = true }
repository = { workspace = true }
homepage = { workspace = true }
license = { workspace = true }
edition = { workspace = true }

[package.metadata.docs.rs]
targets = ["x86_64-unknown-linux-gnu"]

[lib]
bench = false

[features]
frozen-abi = [
    "dep:solana-frozen-abi",
    "dep:solana-frozen-abi-macro",
    "solana-bloom/frozen-abi",
    "solana-ledger/frozen-abi",
    "solana-perf/frozen-abi",
    "solana-runtime/frozen-abi",
    "solana-short-vec/frozen-abi",
    "solana-version/frozen-abi",
    "solana-vote/frozen-abi",
    "solana-vote-program/frozen-abi",
]
agave-unstable-api = []

[dependencies]
agave-feature-set = { workspace = true }
agave-logger = { workspace = true }
arc-swap = { workspace = true }
arrayvec = { workspace = true }
assert_matches = { workspace = true }
bincode = { workspace = true }
bv = { workspace = true, features = ["serde"] }
clap = { workspace = true }
crossbeam-channel = { workspace = true }
flate2 = { workspace = true }
indexmap = { workspace = true, features = ["rayon"] }
itertools = { workspace = true }
log = { workspace = true }
lru = { workspace = true }
num-traits = { workspace = true }
rand = { workspace = true }
rand_chacha = { workspace = true }
rayon = { workspace = true }
serde = { workspace = true }
serde-big-array = { workspace = true }
serde_bytes = { workspace = true }
siphasher = { workspace = true }
solana-bloom = { workspace = true }
solana-clap-utils = { workspace = true }
solana-client = { workspace = true }
solana-clock = { workspace = true }
solana-cluster-type = { workspace = true }
solana-connection-cache = { workspace = true }
solana-entry = { workspace = true }
solana-epoch-schedule = { workspace = true }
solana-frozen-abi = { workspace = true, optional = true, features = [
    "frozen-abi",
] }
solana-frozen-abi-macro = { workspace = true, optional = true, features = [
    "frozen-abi",
] }
solana-hash = { workspace = true }
solana-keypair = { workspace = true }
solana-ledger = { workspace = true, features = ["agave-unstable-api"] }
solana-measure = { workspace = true }
solana-metrics = { workspace = true }
solana-native-token = { workspace = true }
solana-net-utils = { workspace = true, features = ["agave-unstable-api"] }
solana-packet = { workspace = true }
solana-perf = { workspace = true }
solana-pubkey = { workspace = true, features = ["rand"] }
solana-quic-definitions = { workspace = true }
solana-rayon-threadlimit = { workspace = true }
solana-rpc-client = { workspace = true }
solana-runtime = { workspace = true }
solana-sanitize = { workspace = true }
solana-serde-varint = { workspace = true }
solana-sha256-hasher = { workspace = true }
solana-short-vec = { workspace = true }
solana-signature = { workspace = true, default-features = false }
solana-signer = { workspace = true }
solana-streamer = { workspace = true }
solana-time-utils = { workspace = true }
solana-tpu-client = { workspace = true }
solana-transaction = { workspace = true }
solana-version = { workspace = true }
solana-vote = { workspace = true }
solana-vote-program = { workspace = true }
static_assertions = { workspace = true }
thiserror = { workspace = true }

[dev-dependencies]
anyhow = { workspace = true }
bs58 = { workspace = true }
criterion = { workspace = true }
num_cpus = { workspace = true }
serial_test = { workspace = true }
solana-gossip = { path = ".", features = ["agave-unstable-api"] }
solana-net-utils = { workspace = true, features = ["dev-context-only-utils"] }
solana-perf = { workspace = true, features = ["dev-context-only-utils"] }
solana-runtime = { workspace = true, features = ["dev-context-only-utils"] }
solana-signature = { workspace = true, features = ["rand"] }
solana-system-transaction = { workspace = true }
solana-vote-interface = { workspace = true }
static_assertions = { workspace = true }
test-case = { workspace = true }

[[bench]]
name = "crds"
harness = false

[[bench]]
name = "crds_gossip_pull"
harness = false

[[bench]]
name = "crds_shards"
harness = false

[[bench]]
name = "weighted_shuffle"
harness = false

[lints]
workspace = true
