Apache Iceberg Rust 0.8.0 Release
The Apache Iceberg community is pleased to announce version 0.8.0 of iceberg-rust.
This release covers development work from late November 2025 through early January 2026 and is the result of merging 144 PRs from 37 contributors. See the changelog for the complete list of changes.
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🔗
V3 Metadata Support🔗
This release introduces support for Iceberg V3 metadata format, enabling iceberg-rust to work with the latest version of the Iceberg table specification. This includes support for V3 manifests with delete file content and enhanced metadata handling.
Enhanced DataFusion Integration🔗
The DataFusion integration received significant improvements:
- INSERT INTO partitioned tables: Native support for inserting data into partitioned Iceberg tables, with partition column projection and repartitioning operator
- Partition-aware sorting: New
sort_by_partitionoperator to sort input data by partition values - SQLLogicTest integration: Added comprehensive testing framework for DataFusion operations
- Parallel writing: Implemented parallel writer interface for DataFusion execution
Advanced Delete File Handling🔗
iceberg-rust now has substantially improved support for Iceberg's delete files:
- Shared delete file caching: Optimized performance by caching and sharing delete files across multiple readers
- Mixed delete types: Support for both position and equality deletes on the same FileScanTask
- Binary type support: Added binary type support in equality delete processing
- Performance fixes: Fixed stack overflow with large deletes and scan deadlocks
- Row group filtering: Improved filtering when FileScanTask contains byte ranges
- Case-sensitive deletes: Added support for case-sensitive equality delete matching
Enhanced Reader Capabilities🔗
The Arrow reader received several important enhancements:
- Position-based projection: Support for Parquet files without field IDs, enabling reads from migrated tables
- PartitionSpec support: Added partition awareness to FileScanTask and RecordBatchTransformer
- Schema evolution: Fixed handling of Parquet files with schema changes
- Compressed metadata: Support for reading compressed table metadata
- Date32 support: Improved handling of Date32 values and struct defaults
- Binary deserialization: Added support for deserializing bytes values
_filemetadata column: Support for Iceberg's_filecolumn to expose source file information
Advanced Writers🔗
New writer implementations provide flexible approaches to data organization:
- Clustered and Fanout writers: Implemented writers for different data distribution strategies
- Configurable FanoutWriter: Made writer configuration more flexible
- Non-consuming builders: Refactored writer builders to not consume self, allowing reuse
Catalog Improvements🔗
Multiple catalog implementations received updates:
- SqlCatalog: Added update_table support, register_table, and a builder pattern
- S3TablesCatalog: Implemented update_table for AWS S3 Tables
- Glue: Improved concurrency error handling for Glue catalog
- MemoryCatalog: Fixed namespace handling to return absolute NamespaceIdents
- REST catalog: Improved authentication and made types public with documentation
Schema Conversion🔗
New capability to convert Arrow schemas to Iceberg schemas with auto-assigned field IDs, simplifying integration with Arrow-based systems.
PyIceberg-core Improvements🔗
The Python bindings received multiple enhancements:
- Smaller artifacts: Multiple optimizations (#1841, #1844) reduced package size
- ABI3 support: Using pyo3 abi3-py310 for better Python version compatibility
- RecordBatchTransformerBuilder: Updated API for more ergonomic usage
Breaking Changes🔗
This release includes several breaking changes:
- Runtime: Dropped smol runtime support in favor of tokio
- MSRV: Bumped to Rust 1.88
- API cleanup: Removed deprecated
remove_allfrom FileIO - SnapshotProducer: Simplified validation methods by removing redundant parameters
- Enums: Removed wildcard patterns from exhaustive enums
Dependency Updates🔗
- Upgraded to DataFusion 51 from DataFusion 48
- Upgraded to Arrow 57 from Arrow 53
- Upgraded to apache-avro 0.21.0
- Upgraded to OpenDAL v0.55
- Migrated from tera to minijinja for template rendering
Infrastructure Improvements🔗
- Parallel testing: CI now runs unit tests in parallel using a matrix strategy
- Python tooling: Migrated to uv for faster Python dependency management
- License checking: Configured to ignore target/ directory
- GitHub workflow: Added failure notifications
Getting Involved🔗
The iceberg-rust project welcomes contributions. We use GitHub issues for tracking work and the Apache Iceberg Community Slack for discussions.
The easiest way to get started is to:
- Try
iceberg-rustwith your workloads and report any issues you encounter - Review the contributor guide
- Look for good first issues
For more information, visit the iceberg-rust repository.