ebyhr commented on code in PR #17032:
URL: https://github.com/apache/iceberg/pull/17032#discussion_r3510016307


##########
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
+---
+
+<!--
+ - 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.
+ -->
+
+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`).
+
+<!-- more -->
+
+## 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.

Review Comment:
   > respecting `history.expire.*` table properties
   
   The PR description says: 
   ```
   Left for follow-ups: the table-level history.expire.* defaults (defaulting 
the cutoff to now - max-snapshot-age-ms, retain_last to min-snapshots-to-keep, 
and ref aging to max-ref-age-ms) and cleanExpiredMetadata (removing 
unreferenced partition specs and schemas).
   ```
   
   Are those table properties really respected? 



##########
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
+---
+
+<!--
+ - 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.
+ -->
+
+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`).
+
+<!-- more -->
+
+## 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)

Review Comment:
   `#2206` upgraded to 53.0, not 53.1. 
   
   * https://github.com/apache/iceberg-rust/pull/2206



##########
site/docs/blog/posts/2026-07-01-iceberg-rust-0.10.0-release.md:
##########
@@ -0,0 +1,147 @@
+---
+date: 2026-07-06

Review Comment:
   The date is different from the file name `2026-07-01`. 



##########
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
+---
+
+<!--
+ - 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.
+ -->
+
+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`).
+
+<!-- more -->
+
+## 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

Review Comment:
   nit: In my opinion, adding validation is usually not a bug fix. However, 
there's no need to remove it. 



##########
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
+---
+
+<!--
+ - 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.
+ -->
+
+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`).
+
+<!-- more -->
+
+## 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.

Review Comment:
   > add, drop, rename, and update columns
   
   The linked PR only introduced support for the "add" and "delete" operation 
at a glance. Were other operations added in separate PRs? 



##########
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
+---
+
+<!--
+ - 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.
+ -->
+
+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`).
+
+<!-- more -->
+
+## 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

Review Comment:
   `NBSP` is used here:
   ```suggestion
   #### Other improvements
   ```



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to