| # 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 = [ |
| "datafusion/common", |
| "datafusion/common-runtime", |
| "datafusion/catalog", |
| "datafusion/catalog-listing", |
| "datafusion/datasource", |
| "datafusion/datasource-arrow", |
| "datafusion/datasource-avro", |
| "datafusion/datasource-csv", |
| "datafusion/datasource-json", |
| "datafusion/datasource-parquet", |
| "datafusion/core", |
| "datafusion/expr", |
| "datafusion/expr-common", |
| "datafusion/execution", |
| "datafusion/ffi", |
| "datafusion/functions", |
| "datafusion/functions-aggregate", |
| "datafusion/functions-aggregate-common", |
| "datafusion/functions-table", |
| "datafusion/functions-nested", |
| "datafusion/functions-window", |
| "datafusion/functions-window-common", |
| "datafusion/optimizer", |
| "datafusion/physical-expr", |
| "datafusion/physical-expr-adapter", |
| "datafusion/physical-expr-common", |
| "datafusion/physical-optimizer", |
| "datafusion/pruning", |
| "datafusion/physical-plan", |
| "datafusion/proto", |
| "datafusion/proto/gen", |
| "datafusion/proto-common", |
| "datafusion/proto-common/gen", |
| "datafusion/session", |
| "datafusion/spark", |
| "datafusion/sql", |
| "datafusion/sqllogictest", |
| "datafusion/substrait", |
| "datafusion/wasmtest", |
| "datafusion-cli", |
| "datafusion-examples", |
| "datafusion-examples/examples/ffi/ffi_example_table_provider", |
| "datafusion-examples/examples/ffi/ffi_module_interface", |
| "datafusion-examples/examples/ffi/ffi_module_loader", |
| "test-utils", |
| "benchmarks", |
| "datafusion/macros", |
| "datafusion/doc", |
| ] |
| exclude = ["dev/depcheck"] |
| resolver = "2" |
| |
| [workspace.package] |
| authors = ["Apache DataFusion <dev@datafusion.apache.org>"] |
| edition = "2021" |
| homepage = "https://datafusion.apache.org" |
| license = "Apache-2.0" |
| readme = "README.md" |
| repository = "https://github.com/apache/datafusion" |
| # Define Minimum Supported Rust Version (MSRV) |
| rust-version = "1.88.0" |
| # Define DataFusion version |
| version = "50.3.0" |
| |
| [workspace.dependencies] |
| # We turn off default-features for some dependencies here so the workspaces which inherit them can |
| # selectively turn them on if needed, since we can override default-features = true (from false) |
| # for the inherited dependency but cannot do the reverse (override from true to false). |
| # |
| # See for more details: https://github.com/rust-lang/cargo/issues/11329 |
| ahash = { version = "0.8", default-features = false, features = [ |
| "runtime-rng", |
| ] } |
| apache-avro = { version = "0.20", default-features = false } |
| arrow = { version = "57.0.0", features = [ |
| "prettyprint", |
| "chrono-tz", |
| ] } |
| arrow-buffer = { version = "57.0.0", default-features = false } |
| arrow-flight = { version = "57.0.0", features = [ |
| "flight-sql-experimental", |
| ] } |
| arrow-ipc = { version = "57.0.0", default-features = false, features = [ |
| "lz4", |
| ] } |
| arrow-ord = { version = "57.0.0", default-features = false } |
| arrow-schema = { version = "57.0.0", default-features = false } |
| async-trait = "0.1.89" |
| bigdecimal = "0.4.8" |
| bytes = "1.10" |
| chrono = { version = "0.4.42", default-features = false } |
| criterion = "0.7" |
| ctor = "0.6.1" |
| dashmap = "6.0.1" |
| datafusion = { path = "datafusion/core", version = "50.3.0", default-features = false } |
| datafusion-catalog = { path = "datafusion/catalog", version = "50.3.0" } |
| datafusion-catalog-listing = { path = "datafusion/catalog-listing", version = "50.3.0" } |
| datafusion-common = { path = "datafusion/common", version = "50.3.0", default-features = false } |
| datafusion-common-runtime = { path = "datafusion/common-runtime", version = "50.3.0" } |
| datafusion-datasource = { path = "datafusion/datasource", version = "50.3.0", default-features = false } |
| datafusion-datasource-arrow = { path = "datafusion/datasource-arrow", version = "50.3.0", default-features = false } |
| datafusion-datasource-avro = { path = "datafusion/datasource-avro", version = "50.3.0", default-features = false } |
| datafusion-datasource-csv = { path = "datafusion/datasource-csv", version = "50.3.0", default-features = false } |
| datafusion-datasource-json = { path = "datafusion/datasource-json", version = "50.3.0", default-features = false } |
| datafusion-datasource-parquet = { path = "datafusion/datasource-parquet", version = "50.3.0", default-features = false } |
| datafusion-doc = { path = "datafusion/doc", version = "50.3.0" } |
| datafusion-execution = { path = "datafusion/execution", version = "50.3.0", default-features = false } |
| datafusion-expr = { path = "datafusion/expr", version = "50.3.0", default-features = false } |
| datafusion-expr-common = { path = "datafusion/expr-common", version = "50.3.0" } |
| datafusion-ffi = { path = "datafusion/ffi", version = "50.3.0" } |
| datafusion-functions = { path = "datafusion/functions", version = "50.3.0" } |
| datafusion-functions-aggregate = { path = "datafusion/functions-aggregate", version = "50.3.0" } |
| datafusion-functions-aggregate-common = { path = "datafusion/functions-aggregate-common", version = "50.3.0" } |
| datafusion-functions-nested = { path = "datafusion/functions-nested", version = "50.3.0", default-features = false } |
| datafusion-functions-table = { path = "datafusion/functions-table", version = "50.3.0" } |
| datafusion-functions-window = { path = "datafusion/functions-window", version = "50.3.0" } |
| datafusion-functions-window-common = { path = "datafusion/functions-window-common", version = "50.3.0" } |
| datafusion-macros = { path = "datafusion/macros", version = "50.3.0" } |
| datafusion-optimizer = { path = "datafusion/optimizer", version = "50.3.0", default-features = false } |
| datafusion-physical-expr = { path = "datafusion/physical-expr", version = "50.3.0", default-features = false } |
| datafusion-physical-expr-adapter = { path = "datafusion/physical-expr-adapter", version = "50.3.0", default-features = false } |
| datafusion-physical-expr-common = { path = "datafusion/physical-expr-common", version = "50.3.0", default-features = false } |
| datafusion-physical-optimizer = { path = "datafusion/physical-optimizer", version = "50.3.0" } |
| datafusion-physical-plan = { path = "datafusion/physical-plan", version = "50.3.0" } |
| datafusion-proto = { path = "datafusion/proto", version = "50.3.0" } |
| datafusion-proto-common = { path = "datafusion/proto-common", version = "50.3.0" } |
| datafusion-pruning = { path = "datafusion/pruning", version = "50.3.0" } |
| datafusion-session = { path = "datafusion/session", version = "50.3.0" } |
| datafusion-spark = { path = "datafusion/spark", version = "50.3.0" } |
| datafusion-sql = { path = "datafusion/sql", version = "50.3.0" } |
| datafusion-substrait = { path = "datafusion/substrait", version = "50.3.0" } |
| |
| doc-comment = "0.3" |
| env_logger = "0.11" |
| futures = "0.3" |
| half = { version = "2.7.0", default-features = false } |
| hashbrown = { version = "0.14.5", features = ["raw"] } |
| hex = { version = "0.4.3" } |
| indexmap = "2.12.0" |
| insta = { version = "1.43.2", features = ["glob", "filters"] } |
| itertools = "0.14" |
| log = "^0.4" |
| num-traits = { version = "0.2" } |
| object_store = { version = "0.12.4", default-features = false } |
| parking_lot = "0.12" |
| parquet = { version = "57.0.0", default-features = false, features = [ |
| "arrow", |
| "async", |
| "object_store", |
| ] } |
| pbjson = { version = "0.8.0" } |
| pbjson-types = "0.8" |
| # Should match arrow-flight's version of prost. |
| prost = "0.14.1" |
| rand = "0.9" |
| recursive = "0.1.1" |
| regex = "1.12" |
| rstest = "0.26.1" |
| serde_json = "1" |
| sqlparser = { version = "0.59.0", default-features = false, features = ["std", "visitor"] } |
| tempfile = "3" |
| testcontainers = { version = "0.25.2", features = ["default"] } |
| testcontainers-modules = { version = "0.13" } |
| tokio = { version = "1.48", features = ["macros", "rt", "sync"] } |
| url = "2.5.7" |
| |
| [workspace.lints.clippy] |
| # Detects large stack-allocated futures that may cause stack overflow crashes (see threshold in clippy.toml) |
| large_futures = "warn" |
| used_underscore_binding = "warn" |
| or_fun_call = "warn" |
| unnecessary_lazy_evaluations = "warn" |
| uninlined_format_args = "warn" |
| inefficient_to_string = "warn" |
| |
| [workspace.lints.rust] |
| unexpected_cfgs = { level = "warn", check-cfg = [ |
| 'cfg(datafusion_coop, values("tokio", "tokio_fallback", "per_stream"))', |
| "cfg(tarpaulin)", |
| "cfg(tarpaulin_include)", |
| ] } |
| unused_qualifications = "deny" |
| |
| # -------------------- |
| # Compilation Profiles |
| # -------------------- |
| # A Cargo profile is a preset for the compiler/linker knobs that trade off: |
| # - Build time: how quickly code compiles and links |
| # - Runtime performance: how fast the resulting binaries execute |
| # - Binary size: how large the executables end up |
| # - Debuggability: how much debug information is preserved for debugging and profiling |
| # |
| # Profiles available: |
| # - dev: default debug build; fastest to compile, slowest to run, full debug info |
| # for everyday development. |
| # Run: cargo run |
| # - release: optimized build; slowest to compile, fastest to run, smallest |
| # binaries for public releases. |
| # Run: cargo run --release |
| # - release-nonlto: skips LTO, so it builds quicker while staying close to |
| # release performance. It is useful when developing performance optimizations. |
| # Run: cargo run --profile release-nonlto |
| # - profiling: inherits release optimizations but retains debug info to support |
| # profiling tools and flamegraphs. |
| # Run: cargo run --profile profiling |
| # - ci: derived from `dev` but disables incremental builds and strips dependency |
| # symbols to keep CI artifacts small and reproducible. |
| # Run: cargo run --profile ci |
| # |
| # If you want to optimize compilation, the `compile_profile` benchmark can be useful. |
| # See `benchmarks/README.md` for more details. |
| [profile.release] |
| codegen-units = 1 |
| lto = true |
| strip = true # Eliminate debug information to minimize binary size |
| |
| [profile.release-nonlto] |
| codegen-units = 16 |
| debug-assertions = false |
| incremental = false |
| inherits = "release" |
| lto = false |
| opt-level = 3 |
| overflow-checks = false |
| rpath = false |
| strip = false # Retain debug info for flamegraphs |
| |
| [profile.ci] |
| debug = false |
| inherits = "dev" |
| incremental = false |
| |
| # This rule applies to every package except workspace members (dependencies |
| # such as `arrow` and `tokio`). It disables debug info and related features on |
| # dependencies so their binaries stay smaller, improving cache reuse. |
| [profile.ci.package."*"] |
| debug = false |
| debug-assertions = false |
| strip = "debuginfo" |
| incremental = false |
| |
| [profile.profiling] |
| inherits = "release" |
| debug = true |
| strip = false |