Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
af2e475
feat: datafusion table provider next
roeap Oct 14, 2025
7130d3c
Merge branch 'main' into feat/table-provider
rtyler Oct 24, 2025
e1c3957
chore: reduce wheel size (#3878)
abhiaagarwal Oct 25, 2025
d8b402e
fix: use the default features of aws-config
rtyler Oct 26, 2025
4b62d46
perf(snapshot): use std::mem:take to reduce memory allocation and com…
fvaleye Oct 28, 2025
8215a89
perf(snapshot): use std::mem:take to reduce memory allocation and com…
fvaleye Oct 28, 2025
a3d1f36
create an dumb solution for generate symlink
JustinRush80 Oct 22, 2025
710ae6e
add more docs to make the generate command
JustinRush80 Oct 23, 2025
de6b873
feat: bring the manifest generation into DeltaOps and wire into Python
rtyler Oct 25, 2025
bbaa5ec
feat: implement partition-capable generation of symlink_format_manife…
rtyler Oct 28, 2025
ecf5f38
feat(typed-builder): migrate builder to use TypedBuilder in aws crate
fvaleye Oct 28, 2025
9297c00
feat(typed-builder): migrate builder to use TypedBuilder in catalog-u…
fvaleye Oct 28, 2025
e0f2392
chore: remove deprecated warnings on pub(crate) and a few others
rtyler Oct 31, 2025
a75667a
chore: grab-bag of compiler warning removals
rtyler Oct 31, 2025
8a111fb
Decimal fix
DrakeLin Nov 4, 2025
7664ad3
feat: add GCS auto-registration via ctor hooks (#3923)
ethan-tyler Nov 8, 2025
4fd12f9
chore: bump the patch version to release fixes
rtyler Nov 6, 2025
bbbcb49
chore(cargo): unify cargo profiles with dev, ci and release for Pytho…
fvaleye Nov 7, 2025
b4c37f6
chore(ci): adapt the integration workflow for the CI
fvaleye Nov 7, 2025
e187b34
fix: handle Urls with dots in them correctly in DeltaTableBuilder::fr…
rtyler Nov 11, 2025
ae2b3c5
chore: add some opportunistic testing of PartitionsExt
rtyler Nov 8, 2025
e0f013b
chore(deps): update ctor requirement from 0.2 to 0.6
dependabot[bot] Nov 11, 2025
216e15d
chore: remove proofs/ which are no longer used
rtyler Nov 12, 2025
c274fe0
chore(deps): update convert_case requirement from 0.8.0 to 0.9.0
dependabot[bot] Nov 12, 2025
848dc1e
chore: adding more test coverage to the Gcp crate
rtyler Nov 12, 2025
b5c31c3
Fix: Handle empty tables in get_add_actions()
Nov 6, 2025
df38351
test: fix test_get_add_actions_on_empty_table assertions
Nov 9, 2025
a94d449
chore: add a regression test into the Rust crate
rtyler Nov 15, 2025
1a29c70
chore: removing references to using `partition_filters` for partition…
zyd14 Nov 17, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 5 additions & 5 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ jobs:
uses: actions-rust-lang/rustfmt@v1

- name: build and lint with clippy
run: cargo clippy --features ${{ env.DEFAULT_FEATURES }} --tests
run: cargo clippy --profile=ci --features ${{ env.DEFAULT_FEATURES }} --tests

- name: Run Machete to check for unused dependencies
uses: bnjbvr/cargo-machete@aa070c61641e482bc2b5d41c97b496ee4755bf37
Expand Down Expand Up @@ -83,16 +83,16 @@ jobs:
rustflags: ""

- name: Default build
run: cargo build --package deltalake
run: cargo build --profile=ci --package deltalake

- name: Default features with clippy
run: cargo clippy --features ${{ env.DEFAULT_FEATURES }}
run: cargo clippy --profile=ci --features ${{ env.DEFAULT_FEATURES }}

- name: Spot-check build for native-tls features
run: cargo build --no-default-features --features azure,datafusion,s3-native-tls,gcs,glue
run: cargo build --profile=ci --no-default-features --features azure,datafusion,s3-native-tls,gcs,glue

- name: Check no default features (except rustls)
run: cargo check --no-default-features --features rustls
run: cargo check --profile=ci --no-default-features --features rustls

test:
name: Unit Tests
Expand Down
16 changes: 7 additions & 9 deletions .github/workflows/integration.yml
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,9 @@ env:
# https://github.com/rust-lang/cargo/issues/10280
CARGO_NET_GIT_FETCH_WITH_CLI: "true"
DEFAULT_FEATURES: "azure,datafusion,s3,gcs,glue,hdfs "
# Disable full debug symbol generation to speed up CI build and keep memory down
RUSTFLAGS: -C debuginfo=line-tables-only
# Disable incremental builds by cargo for CI which should save disk space
# and hopefully avoid final link "No space left on device"
CARGO_INCREMENTAL: 0
# Override RUSTFLAGS to not treat warnings as errors (setup-rust-toolchain sets -D warnings by default)
# This allows deprecated methods to be warnings instead of errors
RUSTFLAGS: ""
SCCACHE_GHA_ENABLED: "true"
RUSTC_WRAPPER: "sccache"

Expand Down Expand Up @@ -63,7 +61,7 @@ jobs:
- name: Run tests with rustls (default)
run: |
gmake setup-dat
cargo llvm-cov \
cargo llvm-cov --profile=ci \
--package deltalake-${{ matrix.target.name }} \
--features integration_test \
--codecov \
Expand Down Expand Up @@ -109,7 +107,7 @@ jobs:
- name: Run tests with native-tls
run: |
gmake setup-dat
cargo test \
cargo test --profile=ci \
--package deltalake-aws \
--no-default-features \
--features integration_test,native-tls
Expand Down Expand Up @@ -147,7 +145,7 @@ jobs:
- name: Run tests with rustls (default)
run: |
gmake setup-dat
cargo llvm-cov \
cargo llvm-cov --profile=ci \
--features integration_test \
--package deltalake-hdfs \
--codecov \
Expand Down Expand Up @@ -192,7 +190,7 @@ jobs:
- name: Run tests
run: |
gmake setup-dat
cargo llvm-cov \
cargo llvm-cov --profile=ci \
--package deltalake-lakefs \
--features integration_test_lakefs \
--codecov \
Expand Down
5 changes: 1 addition & 4 deletions .github/workflows/python_benchmark.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,9 +13,6 @@ jobs:
benchmark:
name: Python Benchmark
runs-on: ubuntu-latest
env:
RUSTFLAGS: "-C debuginfo=line-tables-only"
CARGO_INCREMENTAL: 0

steps:
- uses: actions/checkout@v5
Expand All @@ -25,7 +22,7 @@ jobs:

- name: Build deltalake in release mode
run: |
MATURIN_EXTRA_ARGS=--release make develop
PROFILE=ci make develop

# Download previous benchmark result from cache (if exists)
- name: Download previous benchmark data
Expand Down
12 changes: 5 additions & 7 deletions .github/workflows/python_release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ jobs:
with:
target: ${{ matrix.target }}
command: publish
args: --skip-existing -m python/Cargo.toml --no-sdist
args: --skip-existing -m python/Cargo.toml --no-sdist --profile python-release

release-pypi-windows:
needs: validate-release-tag
Expand All @@ -65,7 +65,7 @@ jobs:
with:
target: x86_64-pc-windows-msvc
command: publish
args: --skip-existing -m python/Cargo.toml --no-sdist
args: --skip-existing -m python/Cargo.toml --no-sdist --profile python-release

release-pypi-manylinux-x86-64:
needs: validate-release-tag
Expand All @@ -83,10 +83,9 @@ jobs:
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
with:
maturin-version: v1.6.0 # https://github.com/PyO3/maturin/issues/2154
target: x86_64-unknown-linux-gnu
command: publish
args: --skip-existing -m python/Cargo.toml
args: --skip-existing -m python/Cargo.toml --profile python-release

release-pypi-manylinux-228-aarch64:
needs: validate-release-tag
Expand All @@ -106,7 +105,7 @@ jobs:
with:
target: aarch64-unknown-linux-gnu
command: publish
args: --skip-existing -m python/Cargo.toml --no-sdist
args: --skip-existing -m python/Cargo.toml --no-sdist --profile python-release
manylinux: "2_28"

release-pypi-musl-x86-64:
Expand All @@ -125,10 +124,9 @@ jobs:
env:
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_TOKEN }}
with:
maturin-version: v1.6.0 # https://github.com/PyO3/maturin/issues/2154
target: x86_64-unknown-linux-musl
command: publish
args: --skip-existing -m python/Cargo.toml --zig
args: --skip-existing -m python/Cargo.toml --zig --profile python-release

release-docs:
needs:
Expand Down
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@

**Fixed bugs:**

- Automatically register the AWS, Azure, GCS, HDFS, LakeFS, and Unity storage handlers when the corresponding feature is enabled so `DeltaOps::try_from_uri` no longer errors with unknown schemes such as `gs://`.
- Significant performance regression when opening S3 table on next branch [\#3667](https://github.com/delta-io/delta-rs/issues/3667)
- Concurrent overwrite doesn't fail conflict checking [\#3622](https://github.com/delta-io/delta-rs/issues/3622)
- source distributions missing in v1.1.1 [\#3621](https://github.com/delta-io/delta-rs/issues/3621)
Expand Down
57 changes: 46 additions & 11 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -15,16 +15,6 @@ license = "Apache-2.0"
documentation = "https://docs.rs/deltalake"
repository = "https://github.com/delta-io/delta.rs"

[profile.release-with-debug]
inherits = "release"
debug = true

# Reducing the debuginfo for the test profile in order to trim the disk and RAM
# usage during development
# <https://github.com/delta-io/delta-rs/issues/1550?
[profile.test]
debug = "line-tables-only"

[workspace.dependencies]
delta_kernel = { version = "0.16.0", features = [
"arrow-56",
Expand Down Expand Up @@ -73,6 +63,7 @@ uuid = { version = "1" }
async-trait = { version = "0.1" }
futures = { version = "0.3" }
tokio = { version = "1" }
typed-builder = { version = "0.23.0" }

# opentelemetry
tracing-opentelemetry = { version = "0.32" }
Expand Down Expand Up @@ -103,10 +94,54 @@ AKS = "AKS"
# to avoid using 'type' as a field name.
tpe = "tpe"

# for better flamegraphs when benchmarking
# ============================================================================
# Profile Configuration
# ============================================================================
# Profiles for different use cases:
# - dev: Fast local development with good debug experience (Cargo defaults)
# - test: test builds with minimal debug info to save disk/RAM (custom)
# - release: Production Rust crates - maximum performance (Cargo defaults)
# - bench: For benchmarking with flamegraphs (cargo bench)
# - profiling: For performance profiling with release opts + debug info
# - ci: CI/CD optimized - fast builds, release-like performance
# - python-release: Python wheel builds - portable, reproducible (PyPI releases)
# ============================================================================

# Test profile - reduced debug info to save disk/RAM
# Usage: cargo test (automatic)
# <https://github.com/delta-io/delta-rs/issues/1550>
[profile.test]
debug = "line-tables-only"

# Benchmark profile with debug symbols for flamegraphs
# Usage: cargo bench (automatic)
[profile.bench]
debug = true

# Profiling profile with release optimizations + debug info
# Usage: cargo build --profile=profiling
[profile.profiling]
inherits = "release"
debug = true

# CI profile - optimized for Continuous Integration
# Usage: cargo build --profile=ci
[profile.ci]
inherits = "dev"
debug = false
incremental = false

[profile.ci.package."*"]
opt-level = 3
debug = false
debug-assertions = false
strip = "debuginfo"
incremental = false

# Python wheel release profile - for PyPI distribution
# Usage: maturin build --profile python-release (via .github/workflows/python_release.yml)
[profile.python-release]
inherits = "release"
opt-level = 3
codegen-units = 1
lto = "fat"
6 changes: 0 additions & 6 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,6 @@
DAT_VERSION := 0.0.3
DEFAULT_FEATURES := "azure,datafusion,s3,gcs,glue,hdfs"

# Disable full debug symbol generation to speed up CI build and keep memory down
export RUSTFLAGS:= -C debuginfo=line-tables-only
# Disable incremental builds by cargo for CI which should save disk space
# and hopefully avoid final link "No space left on device"
export CARGO_INCREMENTAL:=0

## begin dat related
####################
.PHONY: setup-dat
Expand Down
5 changes: 3 additions & 2 deletions crates/aws/Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
[package]
name = "deltalake-aws"
version = "0.12.0"
version = "0.12.1"
authors.workspace = true
keywords.workspace = true
readme.workspace = true
Expand All @@ -25,14 +25,15 @@ object_store = { workspace = true, features = ["aws"] }
regex = { workspace = true }
thiserror = { workspace = true }
tokio = { workspace = true }
typed-builder = { workspace = true }
uuid = { workspace = true, features = ["serde", "v4"] }
url = { workspace = true }

# crates.io dependencies
aws-smithy-runtime-api = { version = "1.8" }
aws-smithy-runtime = { version = "1.8", optional = true }
aws-credential-types = { version = "1.2", features = ["hardcoded-credentials"] }
aws-config = { version = "1.8", default-features = false, features = [
aws-config = { version = "1.8", features = [
"behavior-version-latest",
"rt-tokio",
"credentials-process",
Expand Down
4 changes: 4 additions & 0 deletions crates/aws/src/constants.rs
Original file line number Diff line number Diff line change
Expand Up @@ -162,3 +162,7 @@ pub static CONDITION_DELETE_INCOMPLETE: LazyLock<String> = LazyLock::new(|| {

pub const CONDITION_UPDATE_INCOMPLETE: &str = "complete = :f";
pub const DEFAULT_COMMIT_ENTRY_EXPIRATION_DELAY: Duration = Duration::from_secs(86_400);

pub const DEFAULT_S3_POOL_IDLE_TIMEOUT_SECONDS: u64 = 15;
pub const DEFAULT_STS_POOL_IDLE_TIMEOUT_SECONDS: u64 = 10;
pub const DEFAULT_S3_GET_INTERNAL_SERVER_ERROR_RETRIES: usize = 10;
Loading