blob: 173af5fb7e65775e7271272fcd58a82887d63d4b [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 = [
"crates/*",
"cpp",
"python",
"benchmark/tpch",
"benchmark/filegroup",
]
resolver = "3"
[workspace.package]
version = "0.6.0-dev"
edition = "2024"
license = "Apache-2.0"
rust-version = "1.94.1"
keywords = ["apachehudi", "hudi", "datalake", "arrow"]
readme = "README.md"
description = "The native Rust implementation for Apache Hudi"
homepage = "https://github.com/apache/hudi-rs"
repository = "https://github.com/apache/hudi-rs"
[workspace.dependencies]
# arrow
arrow = { version = "58" }
arrow-arith = { version = "58" }
arrow-array = { version = "58" }
arrow-buffer = { version = "58" }
arrow-cast = { version = "58" }
arrow-ipc = { version = "58" }
arrow-json = { version = "58" }
arrow-ord = { version = "58" }
arrow-row = { version = "58" }
arrow-schema = { version = "58", features = ["serde"] }
arrow-select = { version = "58" }
object_store = { version = "0.13.2", features = ["aws", "azure", "gcp"] }
parquet = { version = "58", features = ["async", "object_store"] }
# avro
arrow-avro = { version = "58" }
apache-avro = { version = "0.21", features = ["derive"] }
apache-avro-derive = { version = "0.21" }
# datafusion
datafusion = { version = "54.1" }
datafusion-expr = { version = "54.1" }
datafusion-common = { version = "54.1" }
datafusion-physical-expr = { version = "54.1" }
datafusion-ffi = { version = "54.1" }
# serde
percent-encoding = { version = "2" }
serde = { version = "1", features = ["derive"] }
serde_json = { version = "1" }
# "stdlib"
thiserror = { version = "2" }
bytes = { version = "1" }
chrono = { version = "0.4" }
chrono-tz = { version = "0.10" }
lazy_static = { version = "1" }
log = { version = "0.4" }
log-once = { version = "0.4" }
num-traits = { version = "0.2" }
once_cell = { version = "1" }
paste = { version = "1" }
strum = { version = "0.28", features = ["derive"] }
strum_macros = { version = "0.28" }
url = { version = "2" }
# runtime / async
async-recursion = { version = "1" }
async-trait = { version = "0.1" }
dashmap = { version = "6" }
futures = { version = "0.3" }
tokio = { version = "1", features = ["rt-multi-thread", "sync"] }
# protobuf
prost = { version = "0.14" }
# record positions: log blocks store them as a base64-encoded roaring bitmap
base64 = { version = "0.23" }
# Spill backend for the merge-on-read merge map, behind hudi-core's default-on
# `spill-rocksdb` feature: it bundles RocksDB 8.10 and needs libclang to build
# (bindgen), which every consumer would otherwise pay for — including the Python
# wheel and the cxx bridge — for a disk tier that only engages on spill.
# Licenses: rocksdb Apache-2.0; librocksdb-sys MIT/Apache-2.0/BSD-3-Clause.
rocksdb = { version = "0.22" }
# Fast hasher for the merge map (folded multiply, no hardware-AES dependency).
foldhash = { version = "0.2" }
roaring = { version = "0.11" }
# compression
flate2 = { version = "1" }
# testing
serial_test = { version = "4" }
tempfile = { version = "3" }
zip = { version = "8", default-features = false, features = ["deflate"] }