From 1735336d31e24d08da6672183dbf4b9bfa83689d Mon Sep 17 00:00:00 2001 From: Daniel Carl Jones Date: Wed, 1 Jul 2026 18:59:47 +0100 Subject: [PATCH 1/5] Site: Add blog post for iceberg-rust 0.10.0 --- .../2026-07-01-iceberg-rust-0.10.0-release.md | 147 ++++++++++++++++++ 1 file changed, 147 insertions(+) create mode 100644 site/docs/blog/posts/2026-07-01-iceberg-rust-0.10.0-release.md diff --git a/site/docs/blog/posts/2026-07-01-iceberg-rust-0.10.0-release.md b/site/docs/blog/posts/2026-07-01-iceberg-rust-0.10.0-release.md new file mode 100644 index 000000000000..a2d9d03f2397 --- /dev/null +++ b/site/docs/blog/posts/2026-07-01-iceberg-rust-0.10.0-release.md @@ -0,0 +1,147 @@ +--- +date: 2026-07-06 +title: Apache Iceberg Rust 0.10.0 Release +slug: apache-iceberg-rust-0.10.0-release +authors: + - iceberg-pmc +categories: + - release +--- + + + +The Apache Iceberg community is pleased to announce version 0.10.0 of [iceberg-rust](https://github.com/apache/iceberg-rust). + +This release covers development work from early March through late June 2026 and is the result of merging **238 PRs** from **40 contributors**. See the [changelog] for the complete list of changes. + +[changelog]: https://github.com/apache/iceberg-rust/blob/main/CHANGELOG.md#v0100---2026-06-29 + +`iceberg-rust` is a native Rust implementation of the Apache Iceberg specification, providing high-performance libraries for reading, writing, and managing Iceberg tables in Rust applications and through Python bindings (`pyiceberg-core`). + + + +## Release Highlights + +There has been plenty of contributions across the `iceberg-rust` library, here's a highlight of a few. + +### Schema Evolution + +This release adds the [`update_schema` action](https://github.com/apache/iceberg-rust/pull/2120), enabling programmatic table schema updates. This allows `iceberg-rust` users to add, drop, rename, and update columns through a builder interface. + +### Snapshot Expiration + +A new [`ExpireSnapshotsAction`](https://github.com/apache/iceberg-rust/pull/2591) provides a high-level API for expiring old snapshots, respecting `history.expire.*` table properties and cleaning up associated statistics file metadata for the expired snapshots. + +### Custom Runtime Support + +The [`Runtime` trait](https://github.com/apache/iceberg-rust/pull/2308) can now be injected into catalogs, decoupling `iceberg-rust` from a hard tokio dependency at the catalog layer. This enables embedding in applications with custom async runtimes. + +### Writer Improvements + +- **[Table property-driven Parquet settings](https://github.com/apache/iceberg-rust/pull/2561)**: `ParquetWriterBuilder::from_table_properties` now honors `write.parquet.*` table properties, eliminating the need for manual configuration +- **[Content-defined chunking](https://github.com/apache/iceberg-rust/pull/2375)**: CDC table properties for optimizing Parquet file boundaries +- **[Purge table support](https://github.com/apache/iceberg-rust/pull/2232)**: Catalogs can now purge tables, deleting both metadata and data files + +### Enhanced DataFusion Integration + +- **[EXPLAIN shows pushed-down limits](https://github.com/apache/iceberg-rust/pull/2360)**: `IcebergTableScan` now displays limit pushdown in EXPLAIN output for query debugging +- **[IsNaN predicate pushdown](https://github.com/apache/iceberg-rust/pull/2592)**: NaN-preserving numeric expressions are now pushed into scans +- **[Empty insert handling](https://github.com/apache/iceberg-rust/pull/2712)**: INSERT operations that produce no rows now correctly return a single row with count 0 + +### Reader and Scan Improvements + +- **[Scan I/O metrics](https://github.com/apache/iceberg-rust/pull/2349)**: New `read_with_metrics()` API exposes bytes read and other I/O statistics during scans +- **[Name-mapped field IDs](https://github.com/apache/iceberg-rust/pull/2612)**: Projection and predicate pushdown now correctly use name-mapped field IDs for tables without embedded field IDs +- **[FixedBinary(N) support](https://github.com/apache/iceberg-rust/pull/2348)**: Added support for fixed-length binary types +- **[Snappy codec for Avro](https://github.com/apache/iceberg-rust/pull/2573)**: Avro files compressed with Snappy can now be read + +### Table Encryption (Foundational) + +Significant groundwork has been laid toward Iceberg's table encryption specification, including [AES-GCM cryptographic primitives](https://github.com/apache/iceberg-rust/pull/2026), [streaming encryption/decryption](https://github.com/apache/iceberg-rust/pull/2286), a [KMS trait](https://github.com/apache/iceberg-rust/pull/2339), [StandardKeyMetadata](https://github.com/apache/iceberg-rust/pull/2340), an [Encryption Manager](https://github.com/apache/iceberg-rust/pull/2383), and [manifest-list-level decryption plumbing](https://github.com/apache/iceberg-rust/pull/2453). Writes to encrypted tables are [explicitly blocked](https://github.com/apache/iceberg-rust/pull/2626) until the full write path is complete. End-to-end read and write support for encrypted tables is expected in a future release. See the [table encryption RFC](https://github.com/apache/iceberg-rust/pull/2183) for the full design. + +### Storage Improvements + +#### New Storage Backend - HuggingFace Hub + +A new [HuggingFace Hub storage backend](https://github.com/apache/iceberg-rust/pull/2375) was contributed, enabling direct access to Iceberg tables hosted on HuggingFace datasets. + +#### Other improvements + +- **[`delete_stream` on Storage trait](https://github.com/apache/iceberg-rust/pull/2216)**: Batch delete operations for efficient cleanup +- **[OpenDAL resolving storage](https://github.com/apache/iceberg-rust/pull/2231)**: Automatically resolves the appropriate storage backend based on file path scheme +- **[Timeout layer for OpenDAL](https://github.com/apache/iceberg-rust/pull/2455)**: Added `TimeoutLayer` inside `RetryLayer` to prevent indefinite hangs +- **[S3 virtual-host-style addressing](https://github.com/apache/iceberg-rust/pull/2330)**: Default to virtual-host-style S3 addressing for broader compatibility + +## Bug Fixes + +Notable correctness fixes in this release: + +- **[INT96 timestamp values](https://github.com/apache/iceberg-rust/pull/2301)**: Fixed incorrect Parquet INT96 timestamp interpretation +- **[Nested type column indices](https://github.com/apache/iceberg-rust/pull/2307)**: Fixed `build_fallback_field_id_map` producing incorrect indices for schemas with nested types +- **[Delete-only manifests in FastAppend](https://github.com/apache/iceberg-rust/pull/2545)**: Preserved delete-only manifests that were incorrectly dropped +- **[DeleteFileIndex lost wakeup](https://github.com/apache/iceberg-rust/pull/2696)**: Fixed a hang caused by a lost-wakeup race in `get_deletes_for_data_file` +- **[Row group byte range filtering](https://github.com/apache/iceberg-rust/pull/2615)**: Fixed row duplication for sub-row-group file splits +- **[Cross-engine decimal compatibility](https://github.com/apache/iceberg-rust/pull/2538)**: Added space in decimal type serialization for compatibility with other engines +- **[Puffin magic number validation](https://github.com/apache/iceberg-rust/pull/2416)**: Added missing validation for magic number at the start of a Puffin file +- **[Glue catalog filtering](https://github.com/apache/iceberg-rust/pull/2570)**: Only list Iceberg tables, not all Glue tables + +## Breaking Changes + +- **[Purge table](https://github.com/apache/iceberg-rust/pull/2232)**: Added `purge_table` to the `Catalog` trait; some catalog implementations moved their data-deletion logic from `drop_table` to `purge_table` +- **[Compression codec enum](https://github.com/apache/iceberg-rust/pull/2288)**: Enhanced with additional variants +- **[Custom Runtime in Catalog](https://github.com/apache/iceberg-rust/pull/2308)**: Added `with_runtime` to the `CatalogBuilder` trait +- **[DefaultLocationGenerator](https://github.com/apache/iceberg-rust/pull/2604)**: `new()` now borrows `TableMetadata` instead of taking ownership +- **[MSRV](https://github.com/apache/iceberg-rust/pull/2652)**: Bumped to Rust 1.94 + +## Dependency Updates + +- [Upgraded to DataFusion 53.1](https://github.com/apache/iceberg-rust/pull/2206) and [Arrow 58](https://github.com/apache/iceberg-rust/pull/2206) +- [Upgraded OpenDAL to 0.57](https://github.com/apache/iceberg-rust/pull/2588) +- [Upgraded reqwest to 0.13.3](https://github.com/apache/iceberg-rust/pull/2429) +- [Upgraded tokio to 1.52.1](https://github.com/apache/iceberg-rust/pull/2374) +- [Upgraded rand to 0.10.1](https://github.com/apache/iceberg-rust/pull/2449) + +## Infrastructure Improvements + +- **Public API stability**: [cargo-public-api checks](https://github.com/apache/iceberg-rust/pull/2525) on every PR to catch unintentional API breakage +- **Trusted publishing**: [Migrated to trusted publishing](https://github.com/apache/iceberg-rust/pull/2593) for crates.io releases +- **Standalone compilation**: [CI verifies each crate compiles independently](https://github.com/apache/iceberg-rust/pull/2389) +- **Security**: Pinned all third-party actions to Apache-approved SHAs; ASF allowlist check on every PR +- **Performance**: Disabled debuginfo and incremental compilation in CI; Rust caches saved only from main + +## What's Next + +Work is already underway on several features for upcoming releases: + +- **Table encryption**: With the foundational encryption stack landed, the community is working toward end-to-end encrypted reads and writes +- **Additional commit types**: Support for `RewriteDataFiles`, `RowDelta`, and `Overwrite` commit operations +- **Extensibility**: Continued investment in abstractions for pluggable storage backends and runtime configuration + +## Getting Involved + +The `iceberg-rust` project welcomes contributions. We use GitHub [issues](https://github.com/apache/iceberg-rust/issues) for tracking work and the [Apache Iceberg Community Slack](https://iceberg.apache.org/community/#slack) for discussions. + +The easiest way to get started is to: + +1. Try `iceberg-rust` with your workloads and report any issues you encounter +2. Review the [contributor guide](https://github.com/apache/iceberg-rust/blob/main/CONTRIBUTING.md) +3. Look for [good first issues](https://github.com/apache/iceberg-rust/contribute) + +Code review is also a very welcome contribution - please provide feedback on pull requests where you feel comfortable to do so! + +For more information, visit the [iceberg-rust repository](https://github.com/apache/iceberg-rust). From b5b1ebea033bd3ad338775f56e1647b4ec481801 Mon Sep 17 00:00:00 2001 From: Daniel Carl Jones Date: Thu, 2 Jul 2026 10:59:15 +0100 Subject: [PATCH 2/5] Update blog post based on feedback, other improvements --- ...2026-07-06-iceberg-rust-0.10.0-release.md} | 39 ++++++++++--------- 1 file changed, 20 insertions(+), 19 deletions(-) rename site/docs/blog/posts/{2026-07-01-iceberg-rust-0.10.0-release.md => 2026-07-06-iceberg-rust-0.10.0-release.md} (72%) diff --git a/site/docs/blog/posts/2026-07-01-iceberg-rust-0.10.0-release.md b/site/docs/blog/posts/2026-07-06-iceberg-rust-0.10.0-release.md similarity index 72% rename from site/docs/blog/posts/2026-07-01-iceberg-rust-0.10.0-release.md rename to site/docs/blog/posts/2026-07-06-iceberg-rust-0.10.0-release.md index a2d9d03f2397..a0c242423516 100644 --- a/site/docs/blog/posts/2026-07-01-iceberg-rust-0.10.0-release.md +++ b/site/docs/blog/posts/2026-07-06-iceberg-rust-0.10.0-release.md @@ -37,15 +37,15 @@ This release covers development work from early March through late June 2026 and ## Release Highlights -There has been plenty of contributions across the `iceberg-rust` library, here's a highlight of a few. +There have been plenty of contributions across the `iceberg-rust` library; here's a highlight of a few. ### Schema Evolution -This release adds the [`update_schema` action](https://github.com/apache/iceberg-rust/pull/2120), enabling programmatic table schema updates. This allows `iceberg-rust` users to add, drop, rename, and update columns through a builder interface. +This release adds the [`update_schema` action](https://github.com/apache/iceberg-rust/pull/2120), enabling column addition and removal. ### Snapshot Expiration -A new [`ExpireSnapshotsAction`](https://github.com/apache/iceberg-rust/pull/2591) provides a high-level API for expiring old snapshots, respecting `history.expire.*` table properties and cleaning up associated statistics file metadata for the expired snapshots. +A new `ExpireSnapshotsAction` ([#2591](https://github.com/apache/iceberg-rust/pull/2591), [#2664](https://github.com/apache/iceberg-rust/pull/2664), [#2667](https://github.com/apache/iceberg-rust/pull/2667)) provides a high-level API for expiring old snapshots, respecting `history.expire.*` table properties and cleaning up associated statistics file metadata. ### Custom Runtime Support @@ -53,32 +53,29 @@ The [`Runtime` trait](https://github.com/apache/iceberg-rust/pull/2308) can now ### Writer Improvements -- **[Table property-driven Parquet settings](https://github.com/apache/iceberg-rust/pull/2561)**: `ParquetWriterBuilder::from_table_properties` now honors `write.parquet.*` table properties, eliminating the need for manual configuration -- **[Content-defined chunking](https://github.com/apache/iceberg-rust/pull/2375)**: CDC table properties for optimizing Parquet file boundaries -- **[Purge table support](https://github.com/apache/iceberg-rust/pull/2232)**: Catalogs can now purge tables, deleting both metadata and data files +- **Content-defined chunking** ([#2375](https://github.com/apache/iceberg-rust/pull/2375), [#2561](https://github.com/apache/iceberg-rust/pull/2561)): CDC table properties are now respected for optimizing Parquet file boundaries +- **[Purge table support](https://github.com/apache/iceberg-rust/pull/2232)**: Catalogs now offer a `purge_table` method, deleting both metadata and data files ### Enhanced DataFusion Integration - **[EXPLAIN shows pushed-down limits](https://github.com/apache/iceberg-rust/pull/2360)**: `IcebergTableScan` now displays limit pushdown in EXPLAIN output for query debugging - **[IsNaN predicate pushdown](https://github.com/apache/iceberg-rust/pull/2592)**: NaN-preserving numeric expressions are now pushed into scans -- **[Empty insert handling](https://github.com/apache/iceberg-rust/pull/2712)**: INSERT operations that produce no rows now correctly return a single row with count 0 ### Reader and Scan Improvements -- **[Scan I/O metrics](https://github.com/apache/iceberg-rust/pull/2349)**: New `read_with_metrics()` API exposes bytes read and other I/O statistics during scans -- **[Name-mapped field IDs](https://github.com/apache/iceberg-rust/pull/2612)**: Projection and predicate pushdown now correctly use name-mapped field IDs for tables without embedded field IDs +- **[Scan I/O metrics](https://github.com/apache/iceberg-rust/pull/2349)**: `ArrowReader` now exposes bytes read during scans - **[FixedBinary(N) support](https://github.com/apache/iceberg-rust/pull/2348)**: Added support for fixed-length binary types - **[Snappy codec for Avro](https://github.com/apache/iceberg-rust/pull/2573)**: Avro files compressed with Snappy can now be read ### Table Encryption (Foundational) -Significant groundwork has been laid toward Iceberg's table encryption specification, including [AES-GCM cryptographic primitives](https://github.com/apache/iceberg-rust/pull/2026), [streaming encryption/decryption](https://github.com/apache/iceberg-rust/pull/2286), a [KMS trait](https://github.com/apache/iceberg-rust/pull/2339), [StandardKeyMetadata](https://github.com/apache/iceberg-rust/pull/2340), an [Encryption Manager](https://github.com/apache/iceberg-rust/pull/2383), and [manifest-list-level decryption plumbing](https://github.com/apache/iceberg-rust/pull/2453). Writes to encrypted tables are [explicitly blocked](https://github.com/apache/iceberg-rust/pull/2626) until the full write path is complete. End-to-end read and write support for encrypted tables is expected in a future release. See the [table encryption RFC](https://github.com/apache/iceberg-rust/pull/2183) for the full design. +Significant groundwork has been laid toward Iceberg's table encryption specification. Writes to encrypted tables are [explicitly blocked](https://github.com/apache/iceberg-rust/pull/2626) until the full write path is complete. End-to-end read and write support for encrypted tables is expected in a future release. See the [table encryption RFC](https://github.com/apache/iceberg-rust/pull/2183) for the full design. ### Storage Improvements #### New Storage Backend - HuggingFace Hub -A new [HuggingFace Hub storage backend](https://github.com/apache/iceberg-rust/pull/2375) was contributed, enabling direct access to Iceberg tables hosted on HuggingFace datasets. +The [HuggingFace Hub storage backend](https://github.com/apache/iceberg-rust/pull/2375) was introduced, enabling direct access to Iceberg tables hosted on HuggingFace datasets. #### Other improvements @@ -89,7 +86,7 @@ A new [HuggingFace Hub storage backend](https://github.com/apache/iceberg-rust/p ## Bug Fixes -Notable correctness fixes in this release: +Notable correctness fixes or other validation improvements in this release: - **[INT96 timestamp values](https://github.com/apache/iceberg-rust/pull/2301)**: Fixed incorrect Parquet INT96 timestamp interpretation - **[Nested type column indices](https://github.com/apache/iceberg-rust/pull/2307)**: Fixed `build_fallback_field_id_map` producing incorrect indices for schemas with nested types @@ -97,24 +94,28 @@ Notable correctness fixes in this release: - **[DeleteFileIndex lost wakeup](https://github.com/apache/iceberg-rust/pull/2696)**: Fixed a hang caused by a lost-wakeup race in `get_deletes_for_data_file` - **[Row group byte range filtering](https://github.com/apache/iceberg-rust/pull/2615)**: Fixed row duplication for sub-row-group file splits - **[Cross-engine decimal compatibility](https://github.com/apache/iceberg-rust/pull/2538)**: Added space in decimal type serialization for compatibility with other engines +- **[NaN pushdown correctness](https://github.com/apache/iceberg-rust/pull/2351)**: Fixed NaN pushdown to correctly handle NaN values - **[Puffin magic number validation](https://github.com/apache/iceberg-rust/pull/2416)**: Added missing validation for magic number at the start of a Puffin file - **[Glue catalog filtering](https://github.com/apache/iceberg-rust/pull/2570)**: Only list Iceberg tables, not all Glue tables +- **[Empty insert handling](https://github.com/apache/iceberg-rust/pull/2712)**: INSERT operations that produce no rows now correctly return a single row with count 0 +- **[Name-mapped field IDs](https://github.com/apache/iceberg-rust/pull/2612)**: Projection and predicate pushdown now correctly use name-mapped field IDs for Parquet files without embedded field IDs +- **[Snapshot summary total fields](https://github.com/apache/iceberg-rust/pull/2589)**: Total values are now omitted if the previous summary had unparsable or no previous total. ## Breaking Changes +Here's a few notable breaking changes. +Given `iceberg-rust` has not yet reached version `1.x`, breaking changes are adopted for a better API long-term. + - **[Purge table](https://github.com/apache/iceberg-rust/pull/2232)**: Added `purge_table` to the `Catalog` trait; some catalog implementations moved their data-deletion logic from `drop_table` to `purge_table` -- **[Compression codec enum](https://github.com/apache/iceberg-rust/pull/2288)**: Enhanced with additional variants +- **[Compression codec enum](https://github.com/apache/iceberg-rust/pull/2288)**: Codec enum variant changes introducing Snappy, and including compression levels in Zstd and Gzip. - **[Custom Runtime in Catalog](https://github.com/apache/iceberg-rust/pull/2308)**: Added `with_runtime` to the `CatalogBuilder` trait - **[DefaultLocationGenerator](https://github.com/apache/iceberg-rust/pull/2604)**: `new()` now borrows `TableMetadata` instead of taking ownership - **[MSRV](https://github.com/apache/iceberg-rust/pull/2652)**: Bumped to Rust 1.94 ## Dependency Updates -- [Upgraded to DataFusion 53.1](https://github.com/apache/iceberg-rust/pull/2206) and [Arrow 58](https://github.com/apache/iceberg-rust/pull/2206) -- [Upgraded OpenDAL to 0.57](https://github.com/apache/iceberg-rust/pull/2588) -- [Upgraded reqwest to 0.13.3](https://github.com/apache/iceberg-rust/pull/2429) -- [Upgraded tokio to 1.52.1](https://github.com/apache/iceberg-rust/pull/2374) -- [Upgraded rand to 0.10.1](https://github.com/apache/iceberg-rust/pull/2449) +This release included a number of dependency updates, including upgrading to Apache DataFusion 53 and Apache Arrow 58. +For a full list of dependency versions, the best resources to review are the Cargo manifests. ## Infrastructure Improvements @@ -122,7 +123,7 @@ Notable correctness fixes in this release: - **Trusted publishing**: [Migrated to trusted publishing](https://github.com/apache/iceberg-rust/pull/2593) for crates.io releases - **Standalone compilation**: [CI verifies each crate compiles independently](https://github.com/apache/iceberg-rust/pull/2389) - **Security**: Pinned all third-party actions to Apache-approved SHAs; ASF allowlist check on every PR -- **Performance**: Disabled debuginfo and incremental compilation in CI; Rust caches saved only from main +- **Performance**: [Disabled debuginfo and incremental compilation](https://github.com/apache/iceberg-rust/pull/2672) in CI; [Rust caches saved only from main](https://github.com/apache/iceberg-rust/pull/2669) ## What's Next From 6348c201c673f1a3217aac166e8a6e0e67ed4d3b Mon Sep 17 00:00:00 2001 From: Daniel Carl Jones Date: Mon, 13 Jul 2026 16:32:57 +0100 Subject: [PATCH 3/5] Update for RC3 --- ...d => 2026-07-14-iceberg-rust-0.10.0-release.md} | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) rename site/docs/blog/posts/{2026-07-06-iceberg-rust-0.10.0-release.md => 2026-07-14-iceberg-rust-0.10.0-release.md} (86%) diff --git a/site/docs/blog/posts/2026-07-06-iceberg-rust-0.10.0-release.md b/site/docs/blog/posts/2026-07-14-iceberg-rust-0.10.0-release.md similarity index 86% rename from site/docs/blog/posts/2026-07-06-iceberg-rust-0.10.0-release.md rename to site/docs/blog/posts/2026-07-14-iceberg-rust-0.10.0-release.md index a0c242423516..d27d69a4e3ca 100644 --- a/site/docs/blog/posts/2026-07-06-iceberg-rust-0.10.0-release.md +++ b/site/docs/blog/posts/2026-07-14-iceberg-rust-0.10.0-release.md @@ -1,5 +1,5 @@ --- -date: 2026-07-06 +date: 2026-07-14 title: Apache Iceberg Rust 0.10.0 Release slug: apache-iceberg-rust-0.10.0-release authors: @@ -27,7 +27,7 @@ categories: The Apache Iceberg community is pleased to announce version 0.10.0 of [iceberg-rust](https://github.com/apache/iceberg-rust). -This release covers development work from early March through late June 2026 and is the result of merging **238 PRs** from **40 contributors**. See the [changelog] for the complete list of changes. +This release covers development work from early March through early July 2026 and is the result of merging **252 PRs** from **40 contributors**. See the [changelog] for the complete list of changes. [changelog]: https://github.com/apache/iceberg-rust/blob/main/CHANGELOG.md#v0100---2026-06-29 @@ -61,6 +61,10 @@ The [`Runtime` trait](https://github.com/apache/iceberg-rust/pull/2308) can now - **[EXPLAIN shows pushed-down limits](https://github.com/apache/iceberg-rust/pull/2360)**: `IcebergTableScan` now displays limit pushdown in EXPLAIN output for query debugging - **[IsNaN predicate pushdown](https://github.com/apache/iceberg-rust/pull/2592)**: NaN-preserving numeric expressions are now pushed into scans +### REST Catalog Endpoint Negotiation + +The REST catalog client now [parses server-advertised endpoints](https://github.com/apache/iceberg-rust/pull/2692) from the `GET /v1/config` response. This enables clients to discover which optional operations a server supports before attempting them. + ### Reader and Scan Improvements - **[Scan I/O metrics](https://github.com/apache/iceberg-rust/pull/2349)**: `ArrowReader` now exposes bytes read during scans @@ -100,6 +104,12 @@ Notable correctness fixes or other validation improvements in this release: - **[Empty insert handling](https://github.com/apache/iceberg-rust/pull/2712)**: INSERT operations that produce no rows now correctly return a single row with count 0 - **[Name-mapped field IDs](https://github.com/apache/iceberg-rust/pull/2612)**: Projection and predicate pushdown now correctly use name-mapped field IDs for Parquet files without embedded field IDs - **[Snapshot summary total fields](https://github.com/apache/iceberg-rust/pull/2589)**: Total values are now omitted if the previous summary had unparsable or no previous total. +- **[Equality delete null handling](https://github.com/apache/iceberg-rust/pull/2781)**: Rows with a null value in an equality-delete column were incorrectly deleted +- **[Negative positional delete positions](https://github.com/apache/iceberg-rust/pull/2631)**: Negative positions now error during evaluation instead of wrapping to large u64 offsets +- **[Required field absent without default](https://github.com/apache/iceberg-rust/pull/2797)**: Properly errors instead of silently producing null for required fields absent from a data file +- **[Non-append insert rejection](https://github.com/apache/iceberg-rust/pull/2714)**: Overwrite/replace inserts in DataFusion are now rejected instead of silently succeeding with append semantics +- **[Float/double datum conversion](https://github.com/apache/iceberg-rust/pull/2783)**: Predicates with mismatched float/double literal types no longer fail +- **[Snapshot summary metrics](https://github.com/apache/iceberg-rust/pull/2726)**: User-supplied properties can no longer override computed summary metrics ## Breaking Changes From 5cd02b315789d289e1d21f954fa7d45174cc9da9 Mon Sep 17 00:00:00 2001 From: Daniel Carl Jones Date: Mon, 13 Jul 2026 16:50:43 +0100 Subject: [PATCH 4/5] Update based on PR feedback --- .../posts/2026-07-14-iceberg-rust-0.10.0-release.md | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/site/docs/blog/posts/2026-07-14-iceberg-rust-0.10.0-release.md b/site/docs/blog/posts/2026-07-14-iceberg-rust-0.10.0-release.md index d27d69a4e3ca..2a2606812b15 100644 --- a/site/docs/blog/posts/2026-07-14-iceberg-rust-0.10.0-release.md +++ b/site/docs/blog/posts/2026-07-14-iceberg-rust-0.10.0-release.md @@ -47,13 +47,15 @@ This release adds the [`update_schema` action](https://github.com/apache/iceberg A new `ExpireSnapshotsAction` ([#2591](https://github.com/apache/iceberg-rust/pull/2591), [#2664](https://github.com/apache/iceberg-rust/pull/2664), [#2667](https://github.com/apache/iceberg-rust/pull/2667)) provides a high-level API for expiring old snapshots, respecting `history.expire.*` table properties and cleaning up associated statistics file metadata. -### Custom Runtime Support +### Configurable Tokio runtime -The [`Runtime` trait](https://github.com/apache/iceberg-rust/pull/2308) can now be injected into catalogs, decoupling `iceberg-rust` from a hard tokio dependency at the catalog layer. This enables embedding in applications with custom async runtimes. +The [`Runtime` trait](https://github.com/apache/iceberg-rust/pull/2308) can now be provided when initializing catalogs. +This allows for injecting a customized Tokio runtime into the session. +For example, it is now possible to configure the thread stack size or maximum number of threads programatically. ### Writer Improvements -- **Content-defined chunking** ([#2375](https://github.com/apache/iceberg-rust/pull/2375), [#2561](https://github.com/apache/iceberg-rust/pull/2561)): CDC table properties are now respected for optimizing Parquet file boundaries +- **Content-defined chunking** ([#2375](https://github.com/apache/iceberg-rust/pull/2375), [#2561](https://github.com/apache/iceberg-rust/pull/2561)): content-defined chunking table properties are now respected for optimizing Parquet file boundaries - **[Purge table support](https://github.com/apache/iceberg-rust/pull/2232)**: Catalogs now offer a `purge_table` method, deleting both metadata and data files ### Enhanced DataFusion Integration @@ -140,8 +142,7 @@ For a full list of dependency versions, the best resources to review are the Car Work is already underway on several features for upcoming releases: - **Table encryption**: With the foundational encryption stack landed, the community is working toward end-to-end encrypted reads and writes -- **Additional commit types**: Support for `RewriteDataFiles`, `RowDelta`, and `Overwrite` commit operations -- **Extensibility**: Continued investment in abstractions for pluggable storage backends and runtime configuration +- **Transaction layer improvement**: We are working on adding the snapshot validation mechanism to detect write conflicts, laying the groundwork for future support of RewriteDataFiles, RowDelta, and Overwrite commit operations. ## Getting Involved From 5e4589ba659c1c413ea72b19c364dbecd658f4e4 Mon Sep 17 00:00:00 2001 From: Daniel Carl Jones Date: Mon, 13 Jul 2026 16:53:46 +0100 Subject: [PATCH 5/5] Address weird whitespacing --- site/docs/blog/posts/2026-07-14-iceberg-rust-0.10.0-release.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/site/docs/blog/posts/2026-07-14-iceberg-rust-0.10.0-release.md b/site/docs/blog/posts/2026-07-14-iceberg-rust-0.10.0-release.md index 2a2606812b15..10492484d099 100644 --- a/site/docs/blog/posts/2026-07-14-iceberg-rust-0.10.0-release.md +++ b/site/docs/blog/posts/2026-07-14-iceberg-rust-0.10.0-release.md @@ -83,7 +83,7 @@ Significant groundwork has been laid toward Iceberg's table encryption specifica The [HuggingFace Hub storage backend](https://github.com/apache/iceberg-rust/pull/2375) was introduced, enabling direct access to Iceberg tables hosted on HuggingFace datasets. -#### Other improvements +#### Other improvements - **[`delete_stream` on Storage trait](https://github.com/apache/iceberg-rust/pull/2216)**: Batch delete operations for efficient cleanup - **[OpenDAL resolving storage](https://github.com/apache/iceberg-rust/pull/2231)**: Automatically resolves the appropriate storage backend based on file path scheme