blob: 1c17dbe18fa2b9ddb7c1ca356f8de1264fef8406 [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]
exclude = ["dev/msrvcheck", "python"]
members = [
"ballista-cli",
"ballista/api-types",
"ballista/client",
"ballista/core",
"ballista/executor",
"ballista/history",
"ballista/scheduler",
"benchmarks",
"chaos-testing",
"examples",
]
resolver = "3"
[workspace.package]
edition = "2024"
# we should try to follow datafusion version
rust-version = "1.94.0"
[workspace.dependencies]
arrow = { version = "59.2.0", features = ["ipc_compression"] }
arrow-flight = { version = "59.2.0", features = ["flight-sql-experimental"] }
ballista-api-types = { path = "ballista/api-types", version = "54.0.0" }
clap = { version = "4.5", features = ["derive", "cargo"] }
# DataFusion crates are pinned to the 55.0.0-rc3 tag via `[patch.crates-io]`
# below. Workspace deps reference the crates.io version so the patch table is
# the single place to bump when advancing to a newer DataFusion release.
datafusion = { version = "55" }
datafusion-cli = { version = "55" }
datafusion-functions-aggregate-common = { version = "55" }
datafusion-proto = { version = "55" }
datafusion-proto-common = { version = "55" }
datafusion-spark = { version = "55" }
datafusion-substrait = { version = "55" }
ctor = { version = "1.0" }
insta = "1.47"
itertools = "0.15"
mimalloc = { version = "0.1" }
object_store = "0.13.2"
ordered-float = "5"
prost = "0.14"
prost-types = "0.14"
rstest = { version = "0.26" }
tonic = { version = "0.14" }
tonic-build = { version = "0.14", default-features = false, features = [
"transport",
] }
tonic-prost = { version = "0.14" }
tonic-prost-build = { version = "0.14" }
tracing = "0.1"
tracing-appender = "0.2.2"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
async-trait = { version = "0.1" }
dashmap = { version = "6.2" }
env_logger = { version = "0.11" }
futures = { version = "0.3" }
log = { version = "0.4" }
parking_lot = { version = "0.12" }
rand = { version = "0.10" }
serde = { version = "1.0" }
tempfile = { version = "3.27" }
tokio = { version = "1" }
tokio-stream = { version = "0.1" }
url = { version = "2.5" }
url-escape = { version = "0.1.2" }
uuid = { version = "1.23", features = ["v4", "v7"] }
# cargo build --profile release-lto
[profile.release-lto]
codegen-units = 1
inherits = "release"
lto = true
# the release profile takes a long time to build so we can use this profile during development to save time
# cargo build --profile release-nonlto
[profile.release-nonlto]
codegen-units = 16
debug = false
debug-assertions = false
incremental = false
inherits = "release"
lto = false
opt-level = 3
overflow-checks = false
panic = 'unwind'
rpath = false
[profile.ci]
inherits = "dev"
incremental = false
debug = false
debug-assertions = false
strip = "debuginfo"
# ci turns off debug info, etc. for dependencies to allow for smaller binaries making caching more effective
[profile.ci.package."*"]
debug = false
debug-assertions = false
strip = "debuginfo"
incremental = false
# Build profile for the TPC-H integration CI job. That job only checks that the
# distributed suite runs correctly (no timing gate), so it trades some runtime
# speed for much faster compilation: opt-level 1 keeps queries fast enough while
# compiling dependencies far quicker than the opt-level 3 release profiles. Do
# not use this for performance numbers — use release-nonlto / release-lto.
[profile.tpch-ci]
inherits = "release"
opt-level = 1
codegen-units = 256
lto = false
debug = false
debug-assertions = false
incremental = false
# Redirect the crates.io datafusion release to the pinned git tag. Bump the
# tag here to advance DataFusion; the workspace-dep versions above stay put.
[patch.crates-io]
datafusion = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3" }
datafusion-cli = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3" }
datafusion-functions-aggregate-common = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3" }
datafusion-proto = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3" }
datafusion-proto-common = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3" }
datafusion-spark = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3" }
datafusion-substrait = { git = "https://github.com/apache/datafusion.git", tag = "55.0.0-rc3" }