Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
23 commits
Select commit Hold shift + click to select a range
7325da7
fix: explicitly set Python interpreter in maturin build to prevent us…
kevinjqliu Mar 23, 2026
65bb709
fix: build_fallback_field_id_map produces incorrect column indices fo…
mbutrovich Apr 16, 2026
e1fb7ed
fix: incorrect Parquet INT96 timestamp values from ArrowReader (#2301)
mbutrovich Apr 16, 2026
112ffe6
fix(s3tables): use 's3' as the default scheme (#2313)
rchowell Apr 15, 2026
c982fb6
update Cargo.lock
CTTY Apr 17, 2026
fb02e75
chore(deps): fix audit check and disable inherited aws sdk default fe…
maybe-vibe Mar 23, 2026
a4ae8e7
chore(deps): Bump rustls-webpki from 0.103.7 to 0.103.10 in bindings/…
blackmwk Mar 24, 2026
afd02c1
Fix RUSTSEC-2026-0097 (#2331)
blackmwk Apr 15, 2026
fb0ee59
update Cargo.lock
CTTY Apr 17, 2026
9db6836
revert serde_arrow to arrow-57 for 0.9.1
CTTY Apr 22, 2026
7d46eaa
chore: Change publish parallism back to 1 (#2254)
CTTY Mar 19, 2026
c4ca1af
ci: fix zizmor security findings (#2290)
kevinjqliu Mar 31, 2026
508ad7c
ci: ensure use bash shell for env (#2305)
kevinjqliu Mar 31, 2026
e40a2a7
Fix zizmor workflow (#2324)
blackmwk Apr 13, 2026
63977f2
chore: update comment tag to match the exact version to fix zizmor (#…
CTTY Apr 15, 2026
b0c1251
Bump version to 0.9.1 and update dep list
CTTY Apr 22, 2026
3d369a6
Infra: Remove GitHub Actions from Dependabot configuration (#2267)
kevinjqliu Mar 23, 2026
e29ac90
ci: fix zizmor workflow (#2334)
kevinjqliu Apr 15, 2026
b6ff8cc
ci: improve github workflows (#2289)
kevinjqliu Mar 30, 2026
e17384a
fix: Bump rustls-webpki from 0.103.12 to 0.103.13 to fix RUSTSEC-2026…
CTTY Apr 23, 2026
990a878
Update CHANGELOG for 0.9.1
CTTY Apr 22, 2026
bf0b6e3
Generate dep list for 0.9.1
CTTY Apr 23, 2026
a78bd0d
Bump pyiceberg_core_rust version to 0.9.1
CTTY Apr 27, 2026
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
5 changes: 5 additions & 0 deletions .cargo/audit.toml
Original file line number Diff line number Diff line change
Expand Up @@ -33,4 +33,9 @@ ignore = [
#
# Introduced by object_store, see https://github.com/apache/arrow-rs-object-store/issues/564
"RUSTSEC-2025-0134",
# `rand` unsoundness with custom logger using `rand::rng()`
#
# Direct dependency upgraded to 0.9.3+. Transitive rand 0.8.5 remains
# from reqsign/sqllogictest/rustc-hash — no 0.8.x patch exists.
"RUSTSEC-2026-0097",
]
2 changes: 1 addition & 1 deletion .github/actions/overwrite-package-version/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@ runs:
using: "composite"
steps:
- name: Setup Python
uses: actions/setup-python@v5
uses: actions/setup-python@a26af69be951a213d495a4c3e4e4022e16d87065 # v5
with:
python-version: '3.12'

Expand Down
2 changes: 1 addition & 1 deletion .github/actions/setup-builder/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,8 @@ runs:
using: "composite"
steps:
- name: Setup specified Rust toolchain
shell: bash
if: ${{ inputs.rust-version != '' }}
shell: bash
env:
RUST_VERSION: ${{ inputs.rust-version }}
run: |
Expand Down
4 changes: 4 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ updates:
schedule:
interval: "weekly"
day: "sunday"
cooldown:
default-days: 7

# Maintain dependencies for iceberg
- package-ecosystem: "cargo"
Expand All @@ -42,3 +44,5 @@ updates:
patterns:
- "arrow*"
- "parquet"
cooldown:
default-days: 7
46 changes: 46 additions & 0 deletions .github/workflows/asf-allowlist-check.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
#
# 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.
#

# Verifies all GitHub Actions refs are on the ASF allowlist.
# Actions not on the allowlist silently fail with "Startup failure" — no logs,
# no notifications, and PRs may appear green because no checks ran.
# See https://github.com/apache/infrastructure-actions/issues/574
name: "ASF Allowlist Check"

on:
pull_request:
paths:
- ".github/**"
push:
branches:
- main
paths:
- ".github/**"

permissions:
contents: read

jobs:
asf-allowlist-check:
runs-on: ubuntu-24.04
steps:
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: apache/infrastructure-actions/allowlist-check@4e9c961f587f72b170874b6f5cd4ac15f7f26eb8 # main
6 changes: 4 additions & 2 deletions .github/workflows/audit.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,11 +44,13 @@ jobs:
runs-on: ubuntu-latest
if: github.repository == 'apache/iceberg-rust'
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Setup Rust toolchain
uses: ./.github/actions/setup-builder
with:
rust-version: stable
- uses: rustsec/audit-check@v2.0.0
- uses: rustsec/audit-check@69366f33c96575abad1ee0dba8212993eecbe998 # v2.0.0
with:
token: ${{ secrets.GITHUB_TOKEN }}
22 changes: 14 additions & 8 deletions .github/workflows/bindings_python_ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,9 @@ jobs:
check-rust:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Check format
working-directory: "bindings/python"
run: cargo fmt --all -- --check
Expand All @@ -58,8 +60,10 @@ jobs:
check-python:
runs-on: ubuntu-slim
steps:
- uses: actions/checkout@v6
- uses: astral-sh/setup-uv@v7
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098 # v7.3.1
with:
version: "0.9.3"
enable-cache: true
Expand All @@ -85,16 +89,18 @@ jobs:
- macos-latest
- windows-latest
steps:
- uses: actions/checkout@v6
- uses: actions/setup-python@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- uses: actions/setup-python@a309ff8b426b58ec0e2a45f0f869d46889d02405 # v6
with:
python-version: 3.12
- uses: PyO3/maturin-action@v1
- uses: PyO3/maturin-action@04ac600d27cdf7a9a280dadf7147097c42b757ad # v1.50.1
with:
working-directory: "bindings/python"
command: build
args: --out dist
- uses: astral-sh/setup-uv@v7
args: --out dist -i python3.12 # Explicitly set interpreter; manylinux containers have multiple Pythons and maturin may pick an older one
- uses: astral-sh/setup-uv@5a095e7a2014a4212f075830d4f7277575a9d098 # v7.3.1
with:
version: "0.9.3"
enable-cache: true
Expand Down
39 changes: 25 additions & 14 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -53,19 +53,21 @@ jobs:
- ubuntu-latest
- macos-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- name: Setup Rust toolchain
uses: ./.github/actions/setup-builder

- name: Check License Header
uses: apache/skywalking-eyes/header@v0.8.0
uses: apache/skywalking-eyes/header@61275cc80d0798a405cb070f7d3a8aaf7cf2c2c1 # v0.8.0

- name: Check toml format
run: make check-toml

- name: Install protoc
uses: arduino/setup-protoc@v3
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

Expand All @@ -91,16 +93,18 @@ jobs:
- macos-latest
- windows-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- name: Setup Rust toolchain
uses: ./.github/actions/setup-builder

- name: Cache Rust artifacts
uses: Swatinem/rust-cache@v2
uses: swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2

- name: Install protoc
uses: arduino/setup-protoc@v3
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

Expand All @@ -117,13 +121,15 @@ jobs:
- macos-latest
- windows-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- name: Setup Rust toolchain
uses: ./.github/actions/setup-builder

- name: Cache Rust artifacts
uses: Swatinem/rust-cache@v2
uses: swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2

- name: Build
run: cargo build -p iceberg --no-default-features
Expand All @@ -138,24 +144,26 @@ jobs:
- { name: "doc", args: "--doc --all-features --workspace" }
name: Tests (${{ matrix.test-suite.name }})
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- name: Setup Rust toolchain
uses: ./.github/actions/setup-builder

- name: Install protoc
uses: arduino/setup-protoc@v3
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}

- name: Cache Rust artifacts
uses: Swatinem/rust-cache@v2
uses: swatinem/rust-cache@e18b497796c12c097a38f9edb9d0641fb99eee32 # v2
with:
key: ${{ matrix.test-suite.name }}

- name: Install cargo-nextest
if: matrix.test-suite.name == 'default'
uses: taiki-e/install-action@v2
uses: taiki-e/install-action@0fde6d128a3d980ceac30be8c8b8739abd963b81 # v2.70.0
with:
tool: cargo-nextest

Expand All @@ -164,6 +172,7 @@ jobs:
run: make docker-up

- name: Run tests
shell: bash
env:
# Disable debug info to speed up compilation and reduce artifact size
RUSTFLAGS: "-C debuginfo=0"
Expand All @@ -182,9 +191,11 @@ jobs:
name: Verify MSRV
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Install protoc
uses: arduino/setup-protoc@v3
uses: arduino/setup-protoc@c65c819552d16ad3c9b72d9dfd5ba5237b9c906b # v3
with:
repo-token: ${{ secrets.GITHUB_TOKEN }}
- name: Get MSRV
Expand Down
6 changes: 4 additions & 2 deletions .github/workflows/ci_typos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,8 @@ jobs:
env:
FORCE_COLOR: 1
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false
- name: Check typos
uses: crate-ci/typos@v1.44.0
uses: crate-ci/typos@631208b7aac2daa8b707f55e7331f9112b0e062d # v1.44.0
8 changes: 5 additions & 3 deletions .github/workflows/codeql.yml
Original file line number Diff line number Diff line change
Expand Up @@ -41,14 +41,16 @@ jobs:

steps:
- name: Checkout repository
uses: actions/checkout@v6
uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- name: Initialize CodeQL
uses: github/codeql-action/init@v4
uses: github/codeql-action/init@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
with:
languages: actions

- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v4
uses: github/codeql-action/analyze@95e58e9a2cdfd71adc6e0353d5c52f41a045d225 # v4.35.2
with:
category: "/language:actions"
23 changes: 19 additions & 4 deletions .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,9 +32,9 @@ permissions:
jobs:
publish:
runs-on: ubuntu-latest
environment: publish
strategy:
# Publish package one by one instead of flooding the registry
max-parallel: 15
max-parallel: 1 # Publish package one by one instead of flooding the registry
matrix:
# Order here is sensitive, as it will be used to determine the order of publishing
package:
Expand All @@ -47,7 +47,9 @@ jobs:
- "crates/catalog/sql"
- "crates/integrations/datafusion"
steps:
- uses: actions/checkout@v6
- uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6
with:
persist-credentials: false

- name: Get MSRV
id: get-msrv
Expand All @@ -62,6 +64,19 @@ jobs:
working-directory: ${{ matrix.package }}
# Only publish if it's a tag and the tag is not a pre-release
if: ${{ startsWith(github.ref, 'refs/tags/') && !contains(github.ref, '-') }}
run: cargo publish --all-features
run: cargo publish --all-features # zizmor: ignore[use-trusted-publishing] -- https://github.com/apache/iceberg-rust/issues/1539
shell: bash
env:
CARGO_REGISTRY_TOKEN: ${{ secrets.CARGO_REGISTRY_TOKEN }}

# Trigger Python release after crate publishing completes.
# Only runs for tag pushes; for manual Python releases, use workflow_dispatch on release_python.yml directly.
release-python:
needs: [publish]
if: ${{ startsWith(github.ref, 'refs/tags/') }}
permissions:
contents: read
id-token: write # Required for PyPI trusted publishing in the called workflow
uses: ./.github/workflows/release_python.yml
with:
release_tag: ${{ github.ref_name }}
Loading
Loading