blob: af7a697ca9c3154ffb80b825572826e2e0c4b879 [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/clickhouse_sink",
"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/meilisearch_sink",
"core/connectors/sinks/mongodb_sink",
"core/connectors/sinks/postgres_sink",
"core/connectors/sinks/quickwit_sink",
"core/connectors/sinks/redshift_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_common",
"core/shard",
"core/simulator",
"core/system_stats",
"core/tools",
"examples/rust",
"gateways/kafka",
"gateways/kafka/tools/kafka-tool",
]
exclude = ["foreign/cpp", "foreign/php", "foreign/python"]
resolver = "3"
[workspace.package]
rust-version = "1.95"
[workspace.lints.rust]
warnings = "deny"
[workspace.dependencies]
actix-cors = "0.7.2"
actix-files = "0.7.0"
actix-web = "4.15.0"
aes-gcm = "0.11.1"
ahash = { version = "0.8.12", features = ["serde"] }
aligned-vec = "0.6.4"
anyhow = "1.0.104"
apache-avro = "0.22.0"
apple-native-keyring-store = { version = "1.0.2", features = ["keychain"] }
argon2 = "0.6.0"
# arrow 58: iceberg 0.10.1 and deltalake 0.32.4 still require it.
arrow = "58.4.0"
arrow-array = "58.4.0"
arrow-json = "58.4.0"
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.92"
async_zip = { version = "0.0.19", 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.23.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.11.1"
blake3 = "1.8.7"
bon = "3.10.0"
byte-unit = { version = "5.2.5", default-features = false, features = ["serde", "byte", "std"] }
bytemuck = { version = "1.25", features = ["derive", "min_const_generics"] }
bytes = "1.12.1"
cfg_aliases = "0.2.2"
charming = "0.6.0"
chrono = { version = "0.4.45", features = ["serde"] }
clap = { version = "4.6.6", features = ["derive", "wrap_help"] }
clap_complete = "4.6.9"
clock = { path = "core/clock" }
colored = "3.1.1"
comfy-table = { version = "8.0.0", default-features = false }
compio = { version = "0.19.2", features = [
"runtime",
"macros",
"io-uring",
"time",
"rustls",
"ring",
"net",
"quic",
"tls",
"ws",
"fs",
] }
compio-buf = "0.8.3"
compio-driver = "0.12.5"
compio-quic = "0.8.2"
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.19"
csv = "1.4.0"
ctor = "1.0.13"
ctrlc = { version = "3.5", features = ["termination"] }
cucumber = "0.23"
cyper = { version = "0.9.0", features = ["rustls", "stream"], default-features = false }
cyper-axum = { version = "0.9.0" }
cyper-core = { version = "0.9.0", default-features = false }
darling = "0.24"
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.9.0"
dotenvy = "0.15.7"
dtor = "1.0.6"
elasticsearch = { version = "9.1.0-alpha.1", features = ["rustls-tls"], default-features = false }
enumset = "1.1"
env_logger = "0.11.11"
err_trail = { version = "0.11.1", features = ["tracing"] }
error_set = "0.9.2"
figlet-rs = "1.0.0"
figment = { version = "0.10.19", features = ["toml", "env"] }
file-operation = "0.8.32"
flatbuffers = "25.12.19"
flume = "0.12.0"
fs2 = "0.4.3"
futures = "0.3.34"
futures-core = { version = "0.3.34", default-features = false }
# Keep on the minor compio-tls 0.10 uses; the message_bus tripwire test catches drift.
futures-rustls = "0.26.0"
futures-util = "0.3.34"
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"
hex = "0.4.3"
hostname = "0.4.2"
http = "1.5.0"
human-repr = "1.1.0"
humantime = "2.4.0"
hwlocality = "1.0.0-alpha.12"
hyper = "1.11.1"
hyper-util = { version = "0.1.20", features = ["server-auto", "service"] }
iceberg = "0.10.1"
iceberg-catalog-rest = "0.10.1"
iceberg-storage-opendal = "0.10.1"
iggy = { path = "core/sdk", version = "0.11.0-edge.6" }
iggy-cli = { path = "core/cli", version = "0.14.0-edge.6" }
iggy-gateway-kafka = { path = "gateways/kafka" }
iggy_binary_protocol = { path = "core/binary_protocol", version = "0.11.0-edge.6" }
iggy_common = { path = "core/common", version = "0.11.0-edge.6" }
iggy_connector_doris_sink = { path = "core/connectors/sinks/doris_sink" }
iggy_connector_sdk = { path = "core/connectors/sdk", version = "0.4.0-edge.3" }
indexmap = "2.14.1"
integration = { path = "core/integration" }
ipnet = "2.12.1"
journal = { path = "core/journal" }
js-sys = "0.3"
jsonwebtoken = { version = "11.0.0", features = ["rust_crypto"] }
kafka-protocol = { version = "0.18.0", default-features = false, features = ["broker"] }
keyring-core = "1.0.0"
lazy_static = "1.5.0"
left-right = "0.11"
libc = "0.2.189"
log = "0.4.34"
lz4_flex = "0.14.0"
meilisearch-sdk = { version = "0.33.0", default-features = false, features = [
"reqwest",
"tls",
"jwt_rust_crypto",
] }
message_bus = { path = "core/message_bus" }
metadata = { path = "core/metadata" }
mimalloc = "0.1"
mime_guess = "2.0"
mockall = "0.15.0"
mongodb = { version = "3.8.2", features = ["rustls-tls"] }
nix = { version = "0.31.3", features = ["feature", "fs", "resource", "sched"] }
nonzero_lit = "0.1.2"
notify = "8.2.0"
octocrab = "0.54.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.1"
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.5"
parquet = "58.4.0"
partitions = { path = "core/partitions" }
passterm = "2.0.6"
paste = "1.0"
pgwire = "0.40.7"
postcard = { version = "1.1.3", features = ["alloc"] }
predicates = "3.1.4"
proc-macro2 = "1"
prometheus-client = "0.25.1"
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.2"
rand_xoshiro = "0.8.1"
rayon = "1.12.0"
rcgen = "0.14.10"
regex = "1.13.1"
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 = "3.2.0"
rmp = "0.8.15"
rmp-serde = "1.3.1"
rolling-file = "0.2.0"
rust-embed = "8.12.0"
rust-s3 = { version = "0.37.2", default-features = false, features = ["tokio-rustls-tls", "tags"] }
rustls = { version = "0.23.43", 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.229", features = ["derive", "rc"] }
serde_json = "1.0.151"
serde_with = { version = "3.22.0", features = ["base64", "macros"] }
serde_yaml_ng = "0.10.0"
serial_test = "4.0.1"
server = { path = "core/server", default-features = false }
server_common = { path = "core/server_common" }
shard = { path = "core/shard" }
simd-json = { version = "0.18.1", features = ["serde_impl"] }
smallvec = "1.16"
socket2 = "0.6.5"
sqlparser = { version = "0.62.0", features = ["visitor"] }
sqlx = { version = "0.9.0", features = [
"runtime-tokio",
"tls-rustls",
"postgres",
# "mysql": the Doris integration fixture talks to Doris over its MySQL frontend.
"mysql",
"chrono",
"uuid",
"json",
] }
static-toml = "1.3.0"
strum = { version = "0.28.0", features = ["derive"] }
strum_macros = "0.28.0"
subtle = "2.6.1"
syn = { version = "3", features = ["full", "extra-traits"] }
sysinfo = "0.39.6"
system_stats = { path = "core/system_stats" }
tempfile = "3.27.0"
terminal_size = { version = "0.4.4" }
test-case = "3.3.1"
# Pinned to 0.27 because testcontainers-modules 0.15.0 still requires it.
testcontainers = { version = "0.27.3", features = ["reusable-containers"] }
testcontainers-modules = { version = "0.15.0", features = ["postgres", "http_wait"] }
thiserror = "2.0.20"
tokio = { version = "1.53.1", features = ["full"] }
tokio-postgres = "0.7.18"
tokio-rustls = "0.26.4"
tokio-tungstenite = { version = "0.30", features = ["rustls-tls-webpki-roots"] }
tokio-util = { version = "0.7.19", features = ["compat"] }
toml = "1.1.4"
tower-http = { version = "0.7.1", 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.3"
tungstenite = "0.30.0"
twox-hash = { version = "2.1.4", features = ["xxhash32"] }
ulid = "3.0.0"
ureq = "3.4"
url = "2.5.8"
uuid = { version = "1.26.0", features = ["v4", "v7", "fast-rng", "serde", "zerocopy"] }
vergen-git2 = { version = "10.0.1", 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.9"
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.1", 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
# CPU-heavy crates that dominate dev-profile test time: password hashing,
# checksums, RNG. Cheaper than raising opt-level for the whole graph.
[profile.dev.package.argon2]
opt-level = 3
[profile.dev.package.twox-hash]
opt-level = 3
[profile.dev.package.chacha20]
opt-level = 3
[profile.dev.package.iggy_common]
opt-level = 3