blob: 5990f44e7a674dda2bfaf199a5a6e075d2b55291 [file]
# Licensed to the Apache Software Foundation (ASF) under one
# or more contributor license agreements. See the NOTICE file
# distributed with this work for additional information
# regarding copyright ownership. The ASF licenses this file
# to you under the Apache License, Version 2.0 (the
# "License"); you may not use this file except in compliance
# with the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing,
# software distributed under the License is distributed on an
# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
[workspace]
members = [
"bdd/rust",
"core/ai/mcp",
"core/bench",
"core/bench/dashboard/frontend",
"core/bench/dashboard/server",
"core/bench/dashboard/shared",
"core/bench/report",
"core/bench/runner",
"core/binary_protocol",
"core/cli",
"core/clock",
"core/common",
"core/configs",
"core/configs_derive",
"core/connectors/runtime",
"core/connectors/sdk",
"core/connectors/sinks/delta_sink",
"core/connectors/sinks/doris_sink",
"core/connectors/sinks/elasticsearch_sink",
"core/connectors/sinks/http_sink",
"core/connectors/sinks/iceberg_sink",
"core/connectors/sinks/influxdb_sink",
"core/connectors/sinks/mongodb_sink",
"core/connectors/sinks/postgres_sink",
"core/connectors/sinks/quickwit_sink",
"core/connectors/sinks/s3_sink",
"core/connectors/sinks/stdout_sink",
"core/connectors/sinks/surrealdb_sink",
"core/connectors/sources/elasticsearch_source",
"core/connectors/sources/influxdb_source",
"core/connectors/sources/postgres_source",
"core/connectors/sources/random_source",
"core/consensus",
"core/cpu_allocation",
"core/harness_derive",
"core/integration",
"core/journal",
"core/message_bus",
"core/metadata",
"core/partitions",
"core/sdk",
"core/server",
"core/server-ng",
"core/server_common",
"core/shard",
"core/shard_allocator",
"core/simulator",
"core/tools",
"examples/rust",
]
exclude = ["foreign/cpp", "foreign/php", "foreign/python"]
resolver = "3"
[workspace.package]
rust-version = "1.95"
[workspace.dependencies]
actix-cors = "0.7.1"
actix-files = "0.6.10"
actix-web = "4.14.0"
aes-gcm = "0.10.3"
ahash = { version = "0.8.12", features = ["serde"] }
aligned-vec = "0.6.4"
anyhow = "1.0.102"
apache-avro = "0.21.0"
apple-native-keyring-store = { version = "1.0.0", features = ["keychain"] }
argon2 = "0.5.3"
# Pinned to 57 because iceberg 0.9.1 still requires arrow/parquet 57.
arrow = "57.3.1"
arrow-array = "57.3.1"
arrow-json = "57.3.1"
assert_cmd = "2.2.2"
async-broadcast = "0.7.2"
async-channel = "2.5.0"
async-dropper = { version = "0.3.1", features = ["tokio", "simple"] }
async-trait = "0.1.89"
async_zip = { version = "0.0.18", features = ["tokio", "lzma", "bzip2", "xz", "deflate", "zstd"] }
axum = { version = "0.8.9", features = ["macros"] }
axum-server = { version = "0.8.0", features = ["tls-rustls"] }
base64 = "0.22.1"
bench-dashboard-frontend = { path = "core/bench/dashboard/frontend" }
bench-dashboard-server = { path = "core/bench/dashboard/server" }
bench-dashboard-shared = { path = "core/bench/dashboard/shared" }
bench-report = { path = "core/bench/report" }
bench-runner = { path = "core/bench/runner" }
bit-set = "0.10.0"
blake3 = "1.8.5"
bon = "3.9.3"
byte-unit = { version = "5.2.3", default-features = false, features = ["serde", "byte", "std"] }
bytemuck = { version = "1.25", features = ["derive", "min_const_generics"] }
bytes = "1.12.0"
cfg_aliases = "0.2.1"
charming = "0.6.0"
chrono = { version = "0.4.45", features = ["serde"] }
clap = { version = "4.6.1", features = ["derive", "wrap_help"] }
clap_complete = "4.6.5"
clock = { path = "core/clock" }
colored = "3.1.1"
comfy-table = { version = "7.2.2", default-features = false }
compio = { version = "=0.19.1", features = [
"runtime",
"macros",
"io-uring",
"time",
"rustls",
"ring",
"net",
"quic",
"tls",
"ws",
"fs",
] }
compio-buf = "0.8.3"
compio-driver = "0.12.3"
compio-quic = "=0.8.0"
compio-ws = "=0.4.0"
configs = { path = "core/configs", version = "0.1.0" }
configs_derive = { path = "core/configs_derive", version = "0.1.0" }
consensus = { path = "core/consensus" }
console-subscriber = "0.5.0"
cpu_allocation = { path = "core/cpu_allocation" }
crossbeam = "0.8.4"
crossfire = "3.1.16"
csv = "1.4.0"
ctor = "1.0.7"
ctrlc = { version = "3.5", features = ["termination"] }
cucumber = "0.23"
cyper = { version = "0.9.0", features = ["rustls"], default-features = false }
cyper-axum = { version = "0.9.0" }
darling = "0.23"
dashmap = "6.2.1"
deltalake = { version = "0.32.4", features = ["azure", "gcs", "s3"] }
derive-new = "0.7.0"
derive_builder = "0.20.2"
derive_more = { version = "2.1.1", features = ["full"] }
dircpy = "0.3.20"
dirs = "6.0.0"
dlopen2 = "0.8.2"
dotenvy = "0.15.7"
dtor = "1.0.5"
elasticsearch = { version = "9.1.0-alpha.1", features = ["rustls-tls"], default-features = false }
enumset = "1.1"
env_logger = "0.11.10"
err_trail = { version = "0.11.1", features = ["tracing"] }
error_set = "0.9.1"
figlet-rs = "1.0.0"
figment = { version = "0.10.19", features = ["toml", "env"] }
file-operation = "0.8.25"
flatbuffers = "25.12.19"
flume = "0.12.0"
fs2 = "0.4.3"
futures = "0.3.32"
futures-core = { version = "0.3.32", default-features = false }
# Pinned to the minor compio-tls 0.10.0 resolves to: the replica plane
# handshakes with futures-rustls directly (TLS exporter access) and hands
# the stream to compio-tls via its From impls, so both crates must agree
# on the futures-rustls types. Cargo unifies within 0.26.x; drift to 0.27
# fails compilation loudly (see the tripwire test in message_bus).
futures-rustls = "0.26.0"
futures-util = "0.3.32"
getrandom = { version = "0.4", features = ["wasm_js"] }
git2 = { version = "0.21.0", default-features = false, features = ["vendored-libgit2"] }
gloo = "0.12"
governor = "0.10.4"
harness_derive = { path = "core/harness_derive" }
hash32 = "1.0.0"
hostname = "0.4.2"
http = "1.4.2"
human-repr = "1.1.0"
humantime = "2.3.0"
hwlocality = "1.0.0-alpha.12"
iceberg = "0.9.1"
iceberg-catalog-rest = "0.9.1"
iceberg-storage-opendal = "0.9.1"
iggy = { path = "core/sdk", version = "0.10.1-edge.2" }
iggy-cli = { path = "core/cli", version = "0.13.1-edge.1" }
iggy_binary_protocol = { path = "core/binary_protocol", version = "0.10.1-edge.2" }
iggy_common = { path = "core/common", version = "0.10.1-edge.2" }
iggy_connector_sdk = { path = "core/connectors/sdk", version = "0.3.1-edge.1" }
indexmap = "2.14.0"
integration = { path = "core/integration" }
journal = { path = "core/journal" }
js-sys = "0.3"
jsonwebtoken = { version = "10.4.0", features = ["rust_crypto"] }
keyring-core = "1.0.0"
lazy_static = "1.5.0"
left-right = "0.11"
lending-iterator = "0.1.7"
libc = "0.2.186"
log = "0.4.33"
lz4_flex = "0.13.1"
message_bus = { path = "core/message_bus" }
metadata = { path = "core/metadata" }
mimalloc = "0.1"
mime_guess = "2.0"
mockall = "0.14.0"
moka = { version = "0.12.15", features = ["future"] }
mongodb = { version = "3.7.0", features = ["rustls-tls"] }
nix = { version = "0.31.3", features = ["feature", "fs", "resource", "sched"] }
nonzero_lit = "0.1.2"
notify = "8.2.0"
octocrab = "0.53.1"
opentelemetry = { version = "0.32.0", features = ["trace", "logs"] }
opentelemetry-appender-tracing = { version = "0.32.0", features = ["log"] }
opentelemetry-otlp = { version = "0.32.0", features = [
"logs",
"trace",
"grpc-tonic",
"http",
"http-proto",
"reqwest-client",
] }
opentelemetry-semantic-conventions = "0.32.0"
opentelemetry_sdk = { version = "0.32.1", features = [
"logs",
"trace",
"experimental_async_runtime",
"experimental_logs_batch_log_processor_with_async_runtime",
"experimental_trace_batch_span_processor_with_async_runtime",
] }
papaya = "0.2.4"
parquet = "57.3.1"
partitions = { path = "core/partitions" }
passterm = "2.0.6"
paste = "1.0"
postcard = { version = "1.1.3", features = ["alloc"] }
predicates = "3.1.4"
proc-macro2 = "1"
prometheus-client = "0.25.0"
prost = "0.14.4"
prost-types = "0.14.4"
protox = "0.9.1"
protox-parse = "0.9.0"
quinn = "0.11.11"
quote = "1"
rand = "0.10.1"
rand_xoshiro = "0.8.1"
rayon = "1.12.0"
rcgen = "0.14.8"
regex = "1.12.4"
reqwest = { version = "0.13.4", default-features = false, features = ["json", "rustls"] }
reqwest-middleware = { version = "0.5.2", features = ["json", "query"] }
reqwest-retry = "0.9.1"
reqwest-tracing = "0.7.1"
ring = "0.17.14"
ringbuffer = "0.16.0"
rmcp = "1.7.0"
rmp-serde = "1.3.1"
rolling-file = "0.2.0"
rust-embed = "8.11.0"
rust-s3 = { version = "0.37.2", default-features = false, features = ["tokio-rustls-tls", "tags"] }
rustls = { version = "0.23.41", features = ["ring"] }
rustls-pemfile = "2.2.0"
scopeguard = "1.2.0"
sd-notify = "0.5"
secrecy = { version = "0.10", features = ["serde"] }
send_wrapper = "0.6.0"
serde = { version = "1.0.228", features = ["derive", "rc"] }
serde_json = "1.0.150"
serde_with = { version = "3.21.0", features = ["base64", "macros"] }
serde_yaml_ng = "0.10.0"
serial_test = "3.5.0"
server = { path = "core/server" }
server-ng = { path = "core/server-ng" }
server_common = { path = "core/server_common" }
shard = { path = "core/shard" }
shard_allocator = { path = "core/shard_allocator" }
simd-json = { version = "0.17.0", features = ["serde_impl"] }
slab = "0.4.12"
smallvec = "1.15"
socket2 = "0.6.4"
sqlx = { version = "0.9.0", features = [
"runtime-tokio",
"tls-rustls",
"postgres",
# "mysql": Doris exposes a MySQL-wire frontend; the Doris sink's
# integration-test fixture talks to it over this driver. Cargo unifies
# features across the workspace, so it is declared once here.
"mysql",
"chrono",
"uuid",
"json",
] }
static-toml = "1.3.0"
strum = { version = "0.28.0", features = ["derive"] }
strum_macros = "0.28.0"
syn = { version = "2", features = ["full", "extra-traits"] }
sysinfo = "0.39.5"
tempfile = "3.27.0"
terminal_size = { version = "0.4.4" }
test-case = "3.3.1"
testcontainers = { version = "0.27.3", features = ["reusable-containers"] }
testcontainers-modules = { version = "0.15.0", features = ["postgres", "http_wait"] }
thiserror = "2.0.18"
tokio = { version = "1.52.3", features = ["full"] }
tokio-rustls = "0.26.4"
tokio-tungstenite = { version = "0.29", features = ["rustls-tls-webpki-roots"] }
tokio-util = { version = "0.7.18", features = ["compat"] }
toml = "1.1.2"
tower-http = { version = "0.7.0", features = ["add-extension", "cors", "trace"] }
tracing = "0.1.44"
tracing-appender = "0.2.5"
tracing-opentelemetry = "0.33.0"
tracing-subscriber = { version = "0.3.23", default-features = false, features = [
"fmt",
"env-filter",
"ansi",
] }
trait-variant = "0.1.2"
tungstenite = "0.29.0"
twox-hash = { version = "2.1.2", features = ["xxhash32"] }
ulid = "1.2.1"
ureq = "3.3"
url = "2.5.8"
uuid = { version = "1.23.3", features = ["v4", "v7", "fast-rng", "serde", "zerocopy"] }
vergen-git2 = { version = "10.0.0", features = ["build", "cargo", "rustc", "si"] }
walkdir = "2.5.0"
wasm-bindgen = "0.2"
web-sys = { version = "0.3", features = [
"Window",
"Location",
"HtmlSelectElement",
"Clipboard",
"Navigator",
"ResizeObserver",
"ResizeObserverEntry",
] }
webpki-roots = "1.0.8"
windows-native-keyring-store = "1.1.0"
wiremock = "0.6"
yew = { version = "0.23", features = ["csr"] }
yew-router = "0.20"
zbus-secret-service-keyring-store = { version = "1.0.0", features = ["rt-async-io-crypto-rust"] }
zeroize = "1.9.0"
zip = { version = "8.6.0", default-features = false, features = ["deflate"] }
[profile.release]
lto = true
codegen-units = 1
# Selectively optimize CPU-intensive dependencies in dev profile:
# - argon2: password hashing
# - twox-hash: checksum calculation
# - rand_chacha: random number generation
# - iggy_common: wrapper functions for above
# This is faster than global opt-level=1 which adds significant compile time.
[profile.dev.package.argon2]
opt-level = 3
[profile.dev.package.twox-hash]
opt-level = 3
[profile.dev.package.rand_chacha]
opt-level = 3
[profile.dev.package.iggy_common]
opt-level = 3