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