| # 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 |