[profile.release-with-debug]
inherits = "release"
debug = true
split-debuginfo = "packed"

[workspace]
members = [
    "account-decoder",
    "accounts-bench",
    "accounts-cluster-bench",
    "accounts-db",
    "banking-bench",
    "banks-client",
    "banks-interface",
    "banks-server",
    "bench-streamer",
    "bench-tps",
    "bloom",
    "bucket_map",
    "clap-utils",
    "clap-v3-utils",
    "cli",
    "cli-config",
    "cli-output",
    "client",
    "client-test",
    "connection-cache",
    "core",
    "cost-model",
    "dos",
    "download-utils",
    "entry",
    "faucet",
    "frozen-abi",
    "frozen-abi/macro",
    "genesis",
    "genesis-utils",
    "geyser-plugin-interface",
    "geyser-plugin-manager",
    "gossip",
    "install",
    "keygen",
    "ledger",
    "ledger-tool",
    "local-cluster",
    "log-analyzer",
    "logger",
    "measure",
    "memory-management",
    "merkle-root-bench",
    "merkle-tree",
    "metrics",
    "net-shaper",
    "net-utils",
    "notifier",
    "perf",
    "poh",
    "poh-bench",
    "program-runtime",
    "program-test",
    "programs/address-lookup-table",
    "programs/address-lookup-table-tests",
    "programs/bpf-loader-tests",
    "programs/bpf_loader",
    "programs/bpf_loader/gen-syscall-list",
    "programs/compute-budget",
    "programs/config",
    "programs/ed25519-tests",
    "programs/loader-v4",
    "programs/stake",
    "programs/system",
    "programs/vote",
    "programs/zk-token-proof",
    "programs/zk-token-proof-tests",
    "pubsub-client",
    "quic-client",
    "rayon-threadlimit",
    "rbpf-cli",
    "remote-wallet",
    "rpc",
    "rpc-client",
    "rpc-client-api",
    "rpc-client-nonce-utils",
    "rpc-test",
    "runtime",
    "runtime/store-tool",
    "sdk",
    "sdk/cargo-build-bpf",
    "sdk/cargo-build-sbf",
    "sdk/cargo-test-bpf",
    "sdk/cargo-test-sbf",
    "sdk/gen-headers",
    "sdk/macro",
    "sdk/program",
    "send-transaction-service",
    "stake-accounts",
    "storage-bigtable",
    "storage-bigtable/build-proto",
    "storage-proto",
    "streamer",
    "test-validator",
    "thin-client",
    "tokens",
    "tpu-client",
    "transaction-dos",
    "transaction-status",
    "turbine",
    "udp-client",
    "upload-perf",
    "validator",
    "version",
    "vote",
    "watchtower",
    "zk-keygen",
    "zk-token-sdk",
]

exclude = [
    "programs/sbf",
]

# This prevents a Travis CI error when building for Windows.
resolver = "2"

[workspace.package]
version = "1.17.13"
authors = ["Solana Labs Maintainers <maintainers@solanalabs.com>"]
repository = "https://github.com/solana-labs/solana"
homepage = "https://solanalabs.com/"
license = "Apache-2.0"
edition = "2021"

[workspace.dependencies]
aes-gcm-siv = "0.10.3"
ahash = "0.8.3"
anyhow = "1.0.75"
ark-bn254 = "0.4.0"
ark-ec = "0.4.0"
ark-ff = "0.4.0"
ark-serialize = "0.4.0"
array-bytes = "=1.4.1"
arrayref = "0.3.7"
assert_cmd = "2.0"
assert_matches = "1.5.0"
async-channel = "1.9.0"
async-mutex = "1.4.0"
async-trait = "0.1.73"
atty = "0.2.11"
backoff = "0.4.0"
base64 = "0.21.4"
bincode = "1.3.3"
bitflags = { version = "2.3.3", features = ["serde"] }
blake3 = "1.5.0"
block-buffer = "0.10.4"
borsh = "0.10.3"
bs58 = "0.4.0"
bv = "0.11.1"
byte-unit = "4.0.19"
bytecount = "0.6.3"
bytemuck = "1.14.0"
byteorder = "1.4.3"
bytes = "1.5"
bzip2 = "0.4.4"
caps = "0.5.5"
cargo_metadata = "0.15.4"
cc = "1.0.83"
chrono = { version = "0.4.31", default-features = false }
chrono-humanize = "0.2.3"
clap = "2.33.1"
console = "0.15.7"
console_error_panic_hook = "0.1.7"
console_log = "0.2.2"
const_format = "0.2.31"
core_affinity = "0.5.10"
criterion = "0.5.1"
criterion-stats = "0.3.0"
crossbeam-channel = "0.5.8"
csv = "1.2.2"
ctrlc = "3.4.1"
curve25519-dalek = "3.2.1"
dashmap = "4.0.2"
derivation-path = { version = "0.2.0", default-features = false }
dialoguer = "0.10.4"
digest = "0.10.7"
dir-diff = "0.3.2"
dirs-next = "2.0.0"
dlopen2 = "0.5.0"
eager = "0.1.0"
ed25519-dalek = "=1.0.1"
ed25519-dalek-bip32 = "0.2.0"
either = "1.9.0"
enum-iterator = "1.4.1"
env_logger = "0.9.3"
etcd-client = "0.11.1"
fast-math = "0.1"
fd-lock = "3.0.13"
flate2 = "1.0.27"
fnv = "1.0.7"
fs_extra = "1.3.0"
fs-err = "2.9.0"
futures = "0.3.28"
futures-util = "0.3.28"
gag = "1.0.0"
generic-array = { version = "0.14.7", default-features = false }
gethostname = "0.2.3"
getrandom = "0.2.10"
goauth = "0.13.1"
hex = "0.4.3"
hidapi = { version = "2.4.1", default-features = false }
histogram = "0.6.9"
hmac = "0.12.1"
http = "0.2.9"
humantime = "2.0.1"
hyper = "0.14.27"
hyper-proxy = "0.9.1"
im = "15.1.0"
index_list = "0.2.7"
indexmap = "2.0.1"
indicatif = "0.17.7"
Inflector = "0.11.4"
itertools = "0.10.5"
jemallocator = { package = "tikv-jemallocator", version = "0.4.1", features = ["unprefixed_malloc_on_supported_platforms"] }
js-sys = "0.3.64"
json5 = "0.4.1"
jsonrpc-core = "18.0.0"
jsonrpc-core-client = "18.0.0"
jsonrpc-derive = "18.0.0"
jsonrpc-http-server = "18.0.0"
jsonrpc-ipc-server = "18.0.0"
jsonrpc-pubsub = "18.0.0"
jsonrpc-server-utils = "18.0.0"
lazy_static = "1.4.0"
libc = "0.2.148"
libloading = "0.7.4"
libsecp256k1 = "0.6.0"
light-poseidon = "0.2.0"
log = "0.4.20"
lru = "0.7.7"
lz4 = "1.24.0"
memmap2 = "0.5.10"
memoffset = "0.9"
merlin = "3"
min-max-heap = "1.3.0"
modular-bitfield = "0.11.2"
nix = "0.26.4"
num-bigint = "0.4.4"
num_cpus = "1.16.0"
num_enum = "0.6.1"
num-derive = "0.3"
num-traits = "0.2"
openssl = "0.10"
ouroboros = "0.15.6"
parking_lot = "0.12"
pbkdf2 = { version = "0.11.0", default-features = false }
pem = "1.1.1"
percentage = "0.1.0"
pickledb = { version = "0.5.1", default-features = false }
pkcs8 = "0.8.0"
predicates = "2.1"
pretty-hex = "0.3.0"
proc-macro2 = "1.0.67"
proptest = "1.2"
prost = "0.11.9"
prost-types = "0.11.9"
protobuf-src = "1.1.0"
qstring = "0.7.2"
qualifier_attr = { version = "0.2.2", default-features = false }
quinn = "0.10.2"
quinn-proto = "0.10.5"
quote = "1.0"
rand = "0.8.5"
rand_chacha = "0.3.1"
rand_core = "0.6.4"
raptorq = "1.7.0"
rayon = "1.7.0"
rcgen = "0.10.0"
reed-solomon-erasure = "6.0.0"
regex = "1.9.6"
rolling-file = "0.2.0"
reqwest = { version = "0.11.20", default-features = false }
rpassword = "7.2"
rustc_version = "0.4"
rustls = { version = "0.21.7", default-features = false, features = ["quic"] }
rustversion = "1.0.14"
scopeguard = "1.2.0"
semver = "1.0.19"
serde = "1.0.188"
serde_bytes = "0.11.12"
serde_derive = "1.0.103"
serde_json = "1.0.107"
serde_yaml = "0.9.25"
serial_test = "2.0.0"
serde_with = { version = "2.3.3", default-features = false }
sha2 = "0.10.7"
sha3 = "0.10.4"
signal-hook = "0.3.17"
siphasher = "0.3.11"
smpl_jwt = "0.7.1"
socket2 = "0.5.4"
soketto = "0.7"
solana_rbpf = "=0.8.0"
solana-account-decoder = { path = "account-decoder", version = "=1.17.13" }
solana-accounts-db = { path = "accounts-db", version = "=1.17.13" }
solana-address-lookup-table-program = { path = "programs/address-lookup-table", version = "=1.17.13" }
solana-banks-client = { path = "banks-client", version = "=1.17.13" }
solana-banks-interface = { path = "banks-interface", version = "=1.17.13" }
solana-banks-server = { path = "banks-server", version = "=1.17.13" }
solana-bench-tps = { path = "bench-tps", version = "=1.17.13" }
solana-bloom = { path = "bloom", version = "=1.17.13" }
solana-bpf-loader-program = { path = "programs/bpf_loader", version = "=1.17.13" }
solana-bucket-map = { path = "bucket_map", version = "=1.17.13" }
solana-connection-cache = { path = "connection-cache", version = "=1.17.13", default-features = false }
solana-clap-utils = { path = "clap-utils", version = "=1.17.13" }
solana-clap-v3-utils = { path = "clap-v3-utils", version = "=1.17.13" }
solana-cli = { path = "cli", version = "=1.17.13" }
solana-cli-config = { path = "cli-config", version = "=1.17.13" }
solana-cli-output = { path = "cli-output", version = "=1.17.13" }
solana-client = { path = "client", version = "=1.17.13" }
solana-compute-budget-program = { path = "programs/compute-budget", version = "=1.17.13" }
solana-config-program = { path = "programs/config", version = "=1.17.13" }
solana-core = { path = "core", version = "=1.17.13" }
solana-cost-model = { path = "cost-model", version = "=1.17.13" }
solana-download-utils = { path = "download-utils", version = "=1.17.13" }
solana-entry = { path = "entry", version = "=1.17.13" }
solana-faucet = { path = "faucet", version = "=1.17.13" }
solana-frozen-abi = { path = "frozen-abi", version = "=1.17.13" }
solana-frozen-abi-macro = { path = "frozen-abi/macro", version = "=1.17.13" }
solana-genesis = { path = "genesis", version = "=1.17.13" }
solana-genesis-utils = { path = "genesis-utils", version = "=1.17.13" }
solana-geyser-plugin-interface = { path = "geyser-plugin-interface", version = "=1.17.13" }
solana-geyser-plugin-manager = { path = "geyser-plugin-manager", version = "=1.17.13" }
solana-gossip = { path = "gossip", version = "=1.17.13" }
solana-loader-v4-program = { path = "programs/loader-v4", version = "=1.17.13" }
solana-ledger = { path = "ledger", version = "=1.17.13" }
solana-local-cluster = { path = "local-cluster", version = "=1.17.13" }
solana-logger = { path = "logger", version = "=1.17.13" }
solana-measure = { path = "measure", version = "=1.17.13" }
solana-merkle-tree = { path = "merkle-tree", version = "=1.17.13" }
solana-metrics = { path = "metrics", version = "=1.17.13" }
solana-net-utils = { path = "net-utils", version = "=1.17.13" }
solana-notifier = { path = "notifier", version = "=1.17.13" }
solana-perf = { path = "perf", version = "=1.17.13" }
solana-poh = { path = "poh", version = "=1.17.13" }
solana-program = { path = "sdk/program", version = "=1.17.13" }
solana-program-runtime = { path = "program-runtime", version = "=1.17.13" }
solana-program-test = { path = "program-test", version = "=1.17.13" }
solana-pubsub-client = { path = "pubsub-client", version = "=1.17.13" }
solana-quic-client = { path = "quic-client", version = "=1.17.13" }
solana-rayon-threadlimit = { path = "rayon-threadlimit", version = "=1.17.13" }
solana-remote-wallet = { path = "remote-wallet", version = "=1.17.13", default-features = false }
solana-rpc = { path = "rpc", version = "=1.17.13" }
solana-rpc-client = { path = "rpc-client", version = "=1.17.13", default-features = false }
solana-rpc-client-api = { path = "rpc-client-api", version = "=1.17.13" }
solana-rpc-client-nonce-utils = { path = "rpc-client-nonce-utils", version = "=1.17.13" }
solana-runtime = { path = "runtime", version = "=1.17.13" }
solana-sdk = { path = "sdk", version = "=1.17.13" }
solana-sdk-macro = { path = "sdk/macro", version = "=1.17.13" }
solana-send-transaction-service = { path = "send-transaction-service", version = "=1.17.13" }
solana-stake-program = { path = "programs/stake", version = "=1.17.13" }
solana-storage-bigtable = { path = "storage-bigtable", version = "=1.17.13" }
solana-storage-proto = { path = "storage-proto", version = "=1.17.13" }
solana-streamer = { path = "streamer", version = "=1.17.13" }
solana-system-program = { path = "programs/system", version = "=1.17.13" }
solana-test-validator = { path = "test-validator", version = "=1.17.13" }
solana-thin-client = { path = "thin-client", version = "=1.17.13" }
solana-tpu-client = { path = "tpu-client", version = "=1.17.13", default-features = false }
solana-transaction-status = { path = "transaction-status", version = "=1.17.13" }
solana-turbine = { path = "turbine", version = "=1.17.13" }
solana-udp-client = { path = "udp-client", version = "=1.17.13" }
solana-version = { path = "version", version = "=1.17.13" }
solana-vote = { path = "vote", version = "=1.17.13" }
solana-vote-program = { path = "programs/vote", version = "=1.17.13" }
solana-zk-keygen = { path = "zk-keygen", version = "=1.17.13" }
solana-zk-token-proof-program = { path = "programs/zk-token-proof", version = "=1.17.13" }
solana-zk-token-sdk = { path = "zk-token-sdk", version = "=1.17.13" }
spl-associated-token-account = "=2.2.0"
spl-instruction-padding = "0.1"
spl-memo = "=4.0.0"
spl-pod = "=0.1.0"
spl-token = "=4.0.0"
spl-token-2022 = "=0.9.0"
spl-token-metadata-interface = "=0.2.0"
static_assertions = "1.1.0"
stream-cancel = "0.8.1"
strum = "0.24"
strum_macros = "0.24"
subtle = "2.4.1"
symlink = "0.1.0"
syn = "2.0"
sys-info = "0.9.1"
sysctl = "0.4.6"
systemstat = "0.2.3"
tar = "0.4.40"
tarpc = "0.29.0"
tempfile = "3.8.0"
test-case = "3.2.1"
thiserror = "1.0.49"
tiny-bip39 = "0.8.2"
# Update solana-tokio patch below when updating this version
tokio = "1.29.1"
tokio-serde = "0.8"
tokio-stream = "0.1.14"
tokio-tungstenite = "0.20.1"
tokio-util = "0.6"
tonic = "0.9.2"
tonic-build = "0.9.2"
trees = "0.4.2"
tungstenite = "0.20.1"
unix_socket2 = "0.5.4"
uriparse = "0.6.4"
url = "2.4.1"
users = "0.10.0"
wasm-bindgen = "0.2"
winapi = "0.3.8"
winreg = "0.50"
x509-parser = "0.14.0"
zeroize = { version = "1.3", default-features = false }
zstd = "0.11.2"

[patch.crates-io]
# for details, see https://github.com/solana-labs/crossbeam/commit/fd279d707025f0e60951e429bf778b4813d1b6bf
crossbeam-epoch = { git = "https://github.com/solana-labs/crossbeam", rev = "fd279d707025f0e60951e429bf778b4813d1b6bf" }

# We include the following crates as our dependencies above from crates.io:
#
#  * spl-associated-token-account
#  * spl-instruction-padding
#  * spl-memo
#  * spl-pod
#  * spl-token
#  * spl-token-2022
#  * spl-token-metadata-interface
#
# They, in turn, depend on a number of crates that we also include directly using `path`
# specifications.  For example, `spl-token` depends on `solana-program`.  And we explicitly specify
# `solana-program` above as a local path dependency:
#
#     solana-program = { path = "../../sdk/program", version = "=1.16.0" }
#
# Unfortunately, Cargo will try to resolve the `spl-token` `solana-program` dependency only using
# what is available on crates.io.  Crates.io normally contains a previous version of these crates,
# and we end up with two versions of `solana-program` and `solana-zk-token-sdk` and all of their
# dependencies in our build tree.
#
# There is a similar override in `programs/sbf/Cargo.toml`.  Please keep both comments and the
# overrides in sync.
solana-program = { path = "sdk/program" }
solana-zk-token-sdk = { path = "zk-token-sdk" }
#
# Solana RPC nodes experience stalls when running with `tokio` containing this
# commit:
# https://github.com/tokio-rs/tokio/commit/4eed411519783ef6f58cbf74f886f91142b5cfa6
#
# Tokio maintainers believe performance degradation is due to application bugs:
# https://github.com/tokio-rs/tokio/issues/4873#issuecomment-1198277677
#
# This may indeed be true of the code in this monorepo, but we haven't yet
# identified the bug or a way to fix. As a stopgap, this patches `tokio` to the
# tagged version specified above with commit `4eed411` reverted.
#
# Comparison:
# https://github.com/tokio-rs/tokio/compare/tokio-1.29.1...solana-labs:solana-tokio:tokio-1.29.1-revert-4eed411
#
[patch.crates-io.tokio]
git = "https://github.com/solana-labs/solana-tokio.git"
rev = "7cf47705faacf7bf0e43e4131a5377b3291fce21"
