Skip to content

Latest commit

 

History

History
1360 lines (1324 loc) · 146 KB

File metadata and controls

1360 lines (1324 loc) · 146 KB

Change Log

All notable changes to this project will be documented in this file.

The format is based on Keep a Changelog and this project adheres to Semantic Versioning.

[v0.9.0] - 2026-03-10

Breaking Changes

  • API Changes:

    • refactor!(storage): Move OpenDal Storage to a new crate iceberg-storage-opendal (#2207) by @CTTY in #2207
    • feat!(storage): Integration Storage trait with FileIO (#2116) by @CTTY in #2116
    • feat!(io): Implement Storage for OpenDal (#2080) by @CTTY in #2080
  • Compatibility:

    • chore: Bumping MSRV to 1.92.0 (#2224) by @CTTY in #2224
    • chore: Update MSRV to 1.91.0 (#2204) by @xanderbailey in #2204
  • Dependency Updates:

    • chore(deps): upgrade to DataFusion 52 (#1997) by @ethan-tyler in #1997
    • feat(spec): replace rust_decimal with fastnum for 38-digit precision (#2063) by @xbattlax in #2063

All Changes

  • feat(reader): support timestamp type in create_column (#2180) by @chenzl25 in #2180
  • chore: Bumping MSRV to 1.92.0 (#2224) by @CTTY in #2224
  • perf(reader): Avoid second create_parquet_record_batch_stream_builder() call for migrated tables (#2176) by @mbutrovich in #2176
  • doc: Update IO feature flag and examples (#2214) by @CTTY in #2214
  • chore(deps): Bump uuid from 1.21.0 to 1.22.0 (#2221) by @dependabot[bot] in #2221
  • chore(deps): Bump minijinja from 2.16.0 to 2.17.1 (#2222) by @dependabot[bot] in #2222
  • chore: update to DataFusion 52.2 (#2199) by @xanderbailey in #2199
  • perf(reader): Implement AsyncFileReader get_byte_ranges and coalesce close ranges (#2181) by @mbutrovich in #2181
  • refactor!(storage): Move OpenDal Storage to a new crate iceberg-storage-opendal (#2207) by @CTTY in #2207
  • chore: Update MSRV to 1.91.0 (#2204) by @xanderbailey in #2204
  • feat!(storage): Integration Storage trait with FileIO (#2116) by @CTTY in #2116
  • chore(deps): Bump minijinja from 2.14.0 to 2.16.0 (#2195) by @dependabot[bot] in #2195
  • chore(deps): Bump the arrow-parquet group with 7 updates (#2192) by @dependabot[bot] in #2192
  • chore(deps): Bump aws-sdk-glue from 1.133.0 to 1.134.0 (#2196) by @dependabot[bot] in #2196
  • chore(deps): Bump actions/upload-artifact from 6 to 7 (#2189) by @dependabot[bot] in #2189
  • chore(deps): Bump serde_with from 3.16.1 to 3.17.0 (#2194) by @dependabot[bot] in #2194
  • chore(deps): Bump uuid from 1.19.0 to 1.21.0 (#2193) by @dependabot[bot] in #2193
  • chore(deps): Bump actions/download-artifact from 7 to 8 (#2191) by @dependabot[bot] in #2191
  • chore(deps): Bump crate-ci/typos from 1.43.5 to 1.44.0 (#2190) by @dependabot[bot] in #2190
  • chore(deps): Bump fs-err from 3.2.2 to 3.3.0 (#2197) by @dependabot[bot] in #2197
  • chore(deps): Bump tempfile from 3.24.0 to 3.25.0 (#2198) by @dependabot[bot] in #2198
  • chore: use ubuntu-slim for lightweight jobs (#2187) by @zhjwpku in #2187
  • chore(deps): upgrade to DataFusion 52 (#1997) by @ethan-tyler in #1997
  • feat(datafusion): support isnan predicate pushdown to Iceberg (#2142) by @charlesdong1991 in #2142
  • perf(reader): Pass data file size and delete file size to reader to avoid stat() calls (#2175) by @mbutrovich in #2175
  • infra: improve python binding setup (#2178) by @kevinjqliu in #2178
  • perf(reader): Add Parquet metadata size hint option to ArrowReaderBuilder (#2173) by @mbutrovich in #2173
  • ci: Update stale.yml GitHub workflow to handle stale PRs (#2171) by @mbutrovich in #2171
  • chore(deps): Bump urllib3 from 2.5.0 to 2.6.3 in /bindings/python (#2170) by @dependabot[bot] in #2170
  • chore(deps): Bump crate-ci/typos from 1.43.4 to 1.43.5 (#2160) by @dependabot[bot] in #2160
  • chore(deps): Bump actions/checkout from 4 to 6 (#2161) by @dependabot[bot] in #2161
  • Potential fix for code scanning alert no. 1: Cache Poisoning via low-privileged code injection (#2164) by @kevinjqliu in #2164
  • chore(ci): add explicit least-privilege workflow permissions (#2163) by @kevinjqliu in #2163
  • chore(deps): Bump actions/stale from 10.1.1 to 10.2.0 (#2159) by @dependabot[bot] in #2159
  • chore(deps): Bump minijinja from 2.15.1 to 2.16.0 (#2162) by @dependabot[bot] in #2162
  • feat(playground): add memory catalog support (#2121) by @Shekharrajak in #2121
  • CI(Python): dont use --sdist in maturin build for CI (#2166) by @kevinjqliu in #2166
  • CI: Add CodeQL workflow for GitHub Actions security scanning (#2151) by @kevinjqliu in #2151
  • chore(deps): Bump the arrow-parquet group with 2 updates (#2139) by @dependabot[bot] in #2139
  • infra: set github actions max-parallel to 15 (#2150) by @kevinjqliu in #2150
  • chore(deps): Bump uuid from 1.20.0 to 1.21.0 (#2141) by @dependabot[bot] in #2141
  • chore(deps): Bump tempfile from 3.23.0 to 3.25.0 (#2140) by @dependabot[bot] in #2140
  • chore(deps): Bump crate-ci/typos from 1.43.3 to 1.43.4 (#2138) by @dependabot[bot] in #2138
  • fix(rest): Filter sensitive headers from error logs (#2117) (#2130) by @cmackenzie1 in #2117
  • fix: Interpret s3tables warehouse as table_location not metadata loca… (#2115) by @emkornfield in #2115
  • refactor(storage): Reorganize storage code into a new module (#2109) by @CTTY in #2109
  • Use uv instead of pip for python packages (#2129) by @blackmwk in #2129
  • chore(deps): Bump crate-ci/typos from 1.42.3 to 1.43.3 (#2124) by @dependabot[bot] in #2124
  • chore(deps): Bump the arrow-parquet group with 6 updates (#2125) by @dependabot[bot] in #2125
  • chore(deps): Bump fs-err from 3.2.0 to 3.3.0 (#2126) by @dependabot[bot] in #2126
  • chore(deps): Bump time from 0.3.44 to 0.3.47 in /bindings/python (#2112) by @dependabot[bot] in #2112
  • chore(deps): Bump time from 0.3.44 to 0.3.47 (#2113) by @dependabot[bot] in #2113
  • fix(python): Bump Python version upper bound (#2110) by @geruh in #2110
  • feat(io): Implement native MemoryStorage (#2097) by @CTTY in #2097
  • feat(io): Implement native LocalFsStorage (#2094) by @CTTY in #2094
  • chore(deps): Bump bytes from 1.10.1 to 1.11.1 in /bindings/python (#2101) by @dependabot[bot] in #2101
  • chore(deps): Bump bytes from 1.11.0 to 1.11.1 (#2102) by @dependabot[bot] in #2102
  • feat!(io): Implement Storage for OpenDal (#2080) by @CTTY in #2080
  • chore(deps): Bump crate-ci/typos from 1.42.1 to 1.42.3 (#2098) by @dependabot[bot] in #2098
  • chore(deps): Bump minijinja from 2.13.0 to 2.15.1 (#2099) by @dependabot[bot] in #2099
  • chore(python): Use PyPI release of pyiceberg instead of git dependency (#2095) by @kevinjqliu in #2095
  • feat(datafusion): Add Timestamp scalar value conversion for predicate pushdown (#2069) by @viirya in #2069
  • fix: SqlCatalogBuilder does not save supplied name in SqlCatalogConfig before initializing SqlCatalog (#2079) by @brodiealexander in #2079
  • feat(datafusion): Add Boolean predicate pushdown support (#2082) by @viirya in #2082
  • Fix moto server port conflict with macOS AirPlay Receiver (#2090) by @kevinjqliu in #2090
  • site: merge container docs and add a section about docker desktop (#2091) by @kevinjqliu in #2091
  • Add ETL project link to README (#2087) by @imor in #2087
  • feat(spec): replace rust_decimal with fastnum for 38-digit precision (#2063) by @xbattlax in #2063
  • Split sqllogictests into different schedule (#2085) by @liurenjie1024 in #2085
  • feat: Factor out CompressionCodec to common location and add Gzip (#2081) by @emkornfield in #2081
  • Use nextest to speedup tests (#2078) by @liurenjie1024 in #2078
  • Let integration tests run in parallel (#2076) by @liurenjie1024 in #2076
  • Cleanup integration tests (#2074) by @liurenjie1024 in #2074
  • feat(io): Add specific storage configs (#2072) by @CTTY in #2072
  • Simplify test setup by starting container only once. (#2071) by @liurenjie1024 in #2071
  • feat(io): Add Storage, StorageFactory, StorageConfig (#2061) by @CTTY in #2061
  • feat(datafusion): Add LIKE predicate pushdown for StartsWith patterns (#2014) by @viirya in #2014
  • chore(deps): Bump crate-ci/typos from 1.42.0 to 1.42.1 (#2066) by @dependabot[bot] in #2066
  • chore(deps): Bump uuid from 1.19.0 to 1.20.0 (#2067) by @dependabot[bot] in #2067
  • feat(io): Rename Storage to OpenDalStorage (#2059) by @CTTY in #2059
  • feat(datafusion): Add support for DROP TABLE (#2033) by @CTTY in #2033
  • feat(datafusion): Add Binary scalar value conversion for predicate pushdown (#2048) by @viirya in #2048
  • perf(reader): Fast path ArrowReader::read when concurrency is 1 to avoid waker churn and add determinism to FileScanTask processing (#2020) by @mbutrovich in #2020
  • infra: fix manual trigger for the "release python" github workflow (#2049) by @kevinjqliu in #2049
  • fix: reuse partition field IDs for equivalent fields in AddSpec (#2011) by @aditya-subrahmanyan in #2011
  • infra: dynamically set msrv in github workflows (#2040) by @kevinjqliu in #2040
  • chore(deps): Bump the arrow-parquet group with 2 updates (#2046) by @dependabot[bot] in #2046
  • chore(deps): Bump rust_decimal from 1.39.0 to 1.40.0 (#2047) by @dependabot[bot] in #2047
  • infra: auto update docker image (#2044) by @kevinjqliu in #2044
  • infra: use spark base image for docker (#2043) by @kevinjqliu in #2043
  • infra: upgrade spark to 3.5.8 (#2045) by @kevinjqliu in #2045
  • site: release static version from downloads page (#2039) by @kevinjqliu in #2039
  • fix: allow v2 to v3 table upgrades with existing snapshots (#2010) by @aditya-subrahmanyan in #2010
  • rfc: Making Storage a Trait (#1885) by @CTTY in #1885
  • infra: Restrict audit workflow to main apache/iceberg-rust repository (#1974) by @kevinjqliu in #1974
  • chore: Update copyright year in NOTICE files (#2024) by @AndreaBozzo in #2024
  • feat(datafusion): Support CREATE TABLE for DataFusion (#1972) by @CTTY in #1972
  • feat(datafusion): Add schema validation for partition projection (#2008) by @viirya in #2008
  • add make site for local website preview (#2017) by @kevinjqliu in #2017
  • docs: split up the make command in release doc (#2016) by @kevinjqliu in #2016
  • docs: Minor update to README.md (#2018) by @aditya-subrahmanyan in #2018
  • chore(deps): Bump the arrow-parquet group with 6 updates (#2013) by @dependabot[bot] in #2013
  • chore(deps): Bump crate-ci/typos from 1.41.0 to 1.42.0 (#2012) by @dependabot[bot] in #2012
  • feat(spec): add table_properties() method to TableMetadata (#2002) by @xbattlax in #2002
  • feat(datafusion): Add LIMIT pushdown support (#2006) by @viirya in #2006
  • fix: Reserved sort order ID cannot contain any fields (#1978) by @aditya-subrahmanyan in #1978
  • fix: Use correct byte representation for decimal hashing (#1998) by @aditya-subrahmanyan in #1998
  • chore(deps): Bump crate-ci/typos from 1.40.0 to 1.41.0 (#1982) by @dependabot[bot] in #1982
  • feat(datafusion): Apply SortExec when writing in clustered mode (#2005) by @CTTY in #2005

[v0.8.0] - 2026-01-06

Breaking Changes

  • API Changes:

    • refactor: Remove redundant parameters from SnapshotProducer validation methods by @Li0k in #1853
    • chore: Remove deprecated remove_all in FileIO by @jonathanc-n in #1863
    • refactor: Drop smol runtime support by @Xuanwo in #1900
  • Compatibility:

    • chore: bump MSRV to 1.88, fix warnings and clippy errors by @mbutrovich in #1902
  • Dependency Updates:

    • Upgrade opendal to v0.55 by @dentiny in #1895
    • deps: bump DataFusion to 51, Arrow to 57, pyo to 0.26 by @mbutrovich in #1899
  • Other:

    • Remove wildcard pattern in exhaustive enums by @lgingerich in #1925

All Changes

  • chore(deps): Bump tempfile from 3.22.0 to 3.23.0 by @dependabot[bot] in #1717
  • chore(deps): Bump rand from 0.8.5 to 0.9.2 by @dependabot[bot] in #1716
  • chore(deps): Bump crate-ci/typos from 1.36.2 to 1.36.3 by @dependabot[bot] in #1715
  • refactor: Improve REST catalog's authenticate method by @imor in #1712
  • chore(deps): Bump serde_with from 3.14.0 to 3.14.1 by @dependabot[bot] in #1727
  • refactor(writer): Refactor writers for the future partitioning writers by @CTTY in #1657
  • Set lock on version of Pydantic by @Fokko in #1737
  • chore(deps): Bump crate-ci/typos from 1.36.3 to 1.37.2 by @Standing-Man in #1734
  • feat: support more partition transformations for PartitionSpec::partition_to_path by @mnpw in #1730
  • chore: Update website for 0.7.0 by @CTTY in #1738
  • feat(sql-catalog): implement register table for sql catalog by @Standing-Man in #1724
  • fix: ensure CoalescePartitionsExec is enabled for IcebergCommitExec by @sgrebnov in #1723
  • chore(deps): Bump regex from 1.11.2 to 1.12.1 by @dependabot[bot] in #1741
  • chore(deps): Bump crate-ci/typos from 1.37.2 to 1.38.1 by @dependabot[bot] in #1740
  • Improve IcebergCommitExec to correctly populate properties/schema by @sgrebnov in #1721
  • feat(spec): add table_properties.rs to spec by @kaushiksrini in #1733
  • chore(deps): Bump actions/stale from 10.0.0 to 10.1.0 by @dependabot[bot] in #1726
  • docs: remove -src suffix from artifact name by @kevinjqliu in #1743
  • feat(reader): Make ArrowReaderBuilder::new public by @mbutrovich in #1748
  • feat(writer): Add clustered and fanout writer by @CTTY in #1735
  • feat(catalog): impl builder for SqlCatalog by @335g in #1666
  • fix: fix read parquert file when schema change by @chenzl25 in #1750
  • docs: Fix broken orbstack and podman links in CONTRIBUTING.md by @petern48 in #1757
  • chore(deps): Bump tokio from 1.47.1 to 1.48.0 by @dependabot[bot] in #1763
  • chore(deps): Bump backon from 1.5.2 to 1.6.0 by @dependabot[bot] in #1762
  • fix: global eq delete matching should apply to only strictly older files, and fix partition scoped matching to consider spec id by @amogh-jahagirdar in #1758
  • chore(deps): Bump apache/skywalking-eyes from 0.7.0 to 0.8.0 by @dependabot[bot] in #1760
  • chore(deps): Bump rust_decimal from 1.38.0 to 1.39.0 by @dependabot[bot] in #1761
  • feat(datafusion): implement the project node to add the partition columns by @fvaleye in #1602
  • fix: snapshot was producing empty summary by @imor in #1767
  • docs: Add examples for PartitioningWriter by @CTTY in #1754
  • feat(sqllogictest): Add support for iceberg datafusion sqllogictest integration by @lliangyu-lin in #1764
  • fix(build): Pin home version after merging #1764 by @mbutrovich in #1783
  • minor: Update Cargo.lock to add home by @CTTY in #1785
  • chore(deps): Bump aws-sdk-s3tables from 1.40.0 to 1.41.0 by @dependabot[bot] in #1790
  • chore(deps): Bump rand from 0.8.5 to 0.9.2 by @dependabot[bot] in #1789
  • chore(deps): Bump actions/download-artifact from 5 to 6 by @dependabot[bot] in #1788
  • chore(deps): Bump actions/upload-artifact from 4 to 5 by @dependabot[bot] in #1787
  • fix(reader): filter row groups when FileScanTask contains byte ranges by @mbutrovich in #1779
  • refactor(arrow,datafusion): Reuse PartitionValueCalculator in RecordBatchPartitionSplitter by @CTTY in #1781
  • feat: Update Datafusion to v49 by @DerGut in #1704
  • deps: unpin pydantic by @kevinjqliu in #1793
  • feat(reader): Add Date32 support to RecordBatchTransformer create_column by @mbutrovich in #1792
  • feat(catalog): Implement update_table for S3TablesCatalog by @CTTY in #1594
  • feat: Update Datafusion to v50 by @DerGut in #1728
  • ci: Migrate to uv for python by @Xuanwo in #1796
  • ci: Relax msrv check thanks to rust 2024 by @Xuanwo in #1795
  • ci: Don't dismiss stale review to make contribution easier by @Xuanwo in #1799
  • add Makefile to bindings/python by @kevinjqliu in #1800
  • chore: inline format args by @colinmarc in #1805
  • refactor: Migrate from tera to minijinja by @Xuanwo in #1798
  • fix(reader): fix position delete bugs with row group skipping by @mbutrovich in #1806
  • feat(datafusion): implement the partitioning node for DataFusion to define the partitioning by @fvaleye in #1620
  • feat(reader): Date32 from days since epoch for Literal:try_from_json by @mbutrovich in #1803
  • chore(deps): Bump aws-sdk-glue from 1.125.0 to 1.126.0 by @dependabot[bot] in #1812
  • chore(deps): Bump astral-sh/setup-uv from 6 to 7 by @dependabot[bot] in #1811
  • chore(deps): Bump crate-ci/typos from 1.38.1 to 1.39.0 by @dependabot[bot] in #1810
  • feat(reader): position-based column projection for Parquet files without field IDs (migrated tables) by @mbutrovich in #1777
  • fix(reader): Equality delete files with partial schemas (containing only equality columns) by @mbutrovich in #1782
  • infra: use apache/hive:4.0.0 as hive Dockerfile base image by @geruh in #1823
  • fix: StructType fails to deserialize JSON with type field by @mbutrovich in #1822
  • feat: Support for V3 Metadata by @c-thiel in #1682
  • fix(reader): Support both position and equality delete files on the same FileScanTask by @mbutrovich in #1778
  • feat(datafusion): Add TaskWriter for DataFusion by @CTTY in #1769
  • fix: support reading compressed metadata by @colinmarc in #1802
  • Support deserializing bytes by @Fokko in #1820
  • fix: Bump CI Spark version to 3.5.7 by @mbutrovich in #1832
  • infra: use python 3.12 for release by @kevinjqliu in #1836
  • pyiceberg-core: create smaller artifacts by @kevinjqliu in #1841
  • infra: add collaborators to .asf.yaml by @kevinjqliu in #1842
  • pyiceberg-core: use pyo3 abi3-py310 by @kevinjqliu in #1843
  • ci: parallelize unit test with matrix by @kevinjqliu in #1833
  • pyiceberg-core: create even smaller artifacts by @kevinjqliu in #1844
  • chore: Split values.rs into separate files by @mbutrovich in #1840
  • feat(datafusion): Support INSERT INTO partitioned tables by @CTTY in #1827
  • docs: Add Wrappers project to README by @burmecia in #1852
  • feat(reader): Add PartitionSpec support to FileScanTask and RecordBatchTransformer by @mbutrovich in #1821
  • feat(reader): null struct default values in create_column by @mbutrovich in #1847
  • refactor: Remove redundant parameters from SnapshotProducer validation methods by @Li0k in #1853
  • infra: add verbose=true to pypa/gh-action-pypi-publish by @kevinjqliu in #1846
  • use RecordBatchTransformerBuilder instead of RecordBatchTransformer by @kevinjqliu in #1857
  • chore(deps): Bump bytes from 1.10.1 to 1.11.0 by @dependabot[bot] in #1861
  • chore(deps): Bump serde_with from 3.15.1 to 3.16.0 by @dependabot[bot] in #1859
  • chore(deps): Bump fs-err from 3.1.3 to 3.2.0 by @dependabot[bot] in #1860
  • chore(deps): Bump crate-ci/typos from 1.39.0 to 1.39.2 by @dependabot[bot] in #1858
  • chore: Remove deprecated remove_all in FileIO by @jonathanc-n in #1863
  • infra: notify on github workflow failure by @kevinjqliu in #1870
  • feat(reader): Add binary support to get_arrow_datum for equality deletes with binary type by @mbutrovich in #1848
  • Raise concurrency errors properly for glue tables by @jembishop in #1875
  • infra: add instructions for cleaning up testpypi artifacts by @kevinjqliu in #1855
  • chore(deps): Bump actions/checkout from 5 to 6 by @dependabot[bot] in #1883
  • Update apache-avro to v0.21.0 by @N-Boutaib in #1881
  • docs: Clarify functionality of SnapshotProduceOperation by @jonathanc-n in #1874
  • feat(datafusion): Split IcebergTableProvider into static and non-static table provider by @CTTY in #1879
  • infra: use new del_branch_on_merge in .asf.yaml by @kevinjqliu in #1888
  • Upgrade opendal to v0.55 by @dentiny in #1895
  • chore(deps): Bump http from 1.3.1 to 1.4.0 by @dependabot[bot] in #1892
  • chore(deps): Bump crate-ci/typos from 1.39.2 to 1.40.0 by @dependabot[bot] in #1891
  • feat(datafusion): Add sort_by_partition to sort the input partitioned data by @CTTY in #1618
  • rfc: Modularize iceberg Implementations by @Xuanwo in #1854
  • refactor(writer): Make writer builders non-consuming in build by @leonzchang in #1889
  • fix: Keep snapshot log on replace by @c-thiel in #1896
  • chore(deps): Bump actions/stale from 10.1.0 to 10.1.1 by @dependabot[bot] in #1908
  • feat(datafusion): Add sqllogictest for DataFusion INSERT INTO by @CTTY in #1887
  • refactor: Drop smol runtime support by @Xuanwo in #1900
  • chore(deps): Bump minijinja from 2.12.0 to 2.13.0 by @dependabot[bot] in #1909
  • chore(deps): Bump uuid from 1.18.1 to 1.19.0 by @dependabot[bot] in #1910
  • feat(core): Add support for _file column by @gbrgr in #1824
  • feat: Make rest types public, add documentation by @c-thiel in #1901
  • chore: bump MSRV to 1.88, fix warnings and clippy errors by @mbutrovich in #1902
  • ci: Make s3tables ready for publish by @Xuanwo in #1916
  • deps: bump DataFusion to 51, Arrow to 57, pyo to 0.26 by @mbutrovich in #1899
  • fix: Serialize split_offsets as null when empty by @AndreaBozzo in #1906
  • feat(catalog): Implement update_table for SqlCatalog by @lgingerich in #1911
  • fix: Respect precision and scale for Decimal128 in value.rs by @mbutrovich in #1921
  • fix: restore no-op logic in constants_map for NULL identity-partitioned columns by @mbutrovich in #1922
  • fix: stack overflow when loading large equality deletes by @dojiong in #1915
  • chore(deps): Bump actions/upload-artifact from 5 to 6 by @dependabot[bot] in #1931
  • chore(deps): Bump actions/download-artifact from 6 to 7 by @dependabot[bot] in #1932
  • Remove wildcard pattern in exhaustive enums by @lgingerich in #1925
  • fix: prioritize delete manifests to prevent scan deadlock by @dojiong in #1937
  • feat: Include statistics for Reserved Fields by @Fokko in #1849
  • fix(website): Update expected messages by @CTTY in #1942
  • feat: Implement shared delete file loading and caching for ArrowReader by @dojiong in #1941
  • infra: license header check ignore target/ dir by @kevinjqliu in #1954
  • infra: release script, validate proper ICEBERG_VERSION variable by @kevinjqliu in #1956
  • refactor(arrow): Rename parameter in delete_filter for clarity by @robertmu in #1955
  • feat(sqllogictest): use serde derived structs for schedule parsing by @AndreaBozzo in #1953
  • fix: follow IEEE 754 totalOrder for float and double by @Standing-Man in #1959
  • fix: return proper error rather than persisting error message on snapshot by @Standing-Man in #1960
  • feat(arrow): Convert Arrow schema to Iceberg schema with auto assigned field ids by @CTTY in #1928
  • fix: MemoryCatalog to return absolute NamespaceIdents by @eickler in #1970
  • fix(spec): Include delete file content to V3 manifest by @CTTY in #1979
  • fix: fix typo check error by @Standing-Man in #1989
  • Fix ci audit failure by @liurenjie1024 in #1988
  • feat: make FanoutWriter writer configurable by @Standing-Man in #1962

[v0.7.0] - 2025-09-23

Breaking Changes

  • API Changes:
    • feat(writer): Make LocationGenerator partition-aware by @CTTY in #1625
    • feat(catalog): Implement catalog loader for in memory by @lliangyu-lin in #1623

All Changes

  • chore: expose field id mapping from schema by @dentiny in #1498
  • Read ManifestList V1 with V2 projection. by @rambleraptor in #1482
  • refine: refine the interface of SnapshotProducer by @ZENOTME in #1490
  • feat(transaction): Add retry logic to transaction by @CTTY in #1484
  • fix: Fix mock dependency by @dentiny in #1507
  • Bump version to 0.6.0 (Round 1) by @Xuanwo in #1506
  • feat(catalog): Add register_table to Catalog trait by @CTTY in #1509
  • chore: Bump python version for release by @Xuanwo in #1522
  • chore: Bump opendal to 0.54 by @Xuanwo in #1524
  • Preparing 0.6.0 release (update dep list) by @Xuanwo in #1525
  • chore: expose default schema id by @dentiny in #1526
  • Add support for custom credential loader for S3 FileIO by @phillipleblanc in #1528
  • docs: fix release process docs by @kevinjqliu in #1538
  • fix: Use CatalogCommitConflicts for TableRequirement by @CTTY in #1532
  • fix: retain metadata_location from StaticTable::into_table by @colinmarc in #1536
  • infra: use toml-cli to manually set version in github action by @kevinjqliu in #1537
  • refactor: Add read_from() and write_to() to TableMetadata by @CTTY in #1523
  • Add uv instructions to bindings/python/README.md by @Fokko in #1514
  • feat: append action allows snapshot properties by @dentiny in #1534
  • feat(catalog): Implement update_table for MemoryCatalog by @CTTY in #1549
  • fix ci. by @liurenjie1024 in #1557
  • fix(writer): Fix current_written_size for ParquetWriter by @CTTY in #1556
  • chore(deps): Bump tokio from 1.46.1 to 1.47.0 by @dependabot[bot] in #1552
  • fix(parquet_writer): correctly update upper bound by @Erigara in #1520
  • feat(core): Implement RollingFileWriter to help split data into multiple files by @CTTY in #1547
  • Refactor: use metadatalocaiton:new_with_table_location in catalog create_table by @yingjianwu98 in #1558
  • Updates Podman Instructions, Docker-Compose, & Spark Script by @Kurtiscwright in #1553
  • Rest: Implement register table by @gabeiglio in #1521
  • feat(iceberg-datafusion): make IcebergTableScan public by @colinmarc in #1570
  • chore: upgrade roaring to 0.11 by @dentiny in #1577
  • refactor: remove TrackWriter by @mapleFU in #1575
  • feat(spec): Expose DataFile serde functions by @CTTY in #1563
  • Finish Adding Default Implementations for V1→V2 by @Kurtiscwright in #1579
  • feat: add bulk insertion to deletion vector by @dentiny in #1578
  • Try infer file io scheme from metadata location ahead of warehouse path by @daiyy in #1590
  • feat(datafusion): Add IcebergCommitExec to commit the written data files by @CTTY in #1588
  • chore(deps): Bump actions/download-artifact from 4 to 5 by @dependabot[bot] in #1593
  • feat(catalog): Add catalog loader and builder implementation for rest catalog by @lliangyu-lin in #1580
  • chore(deps): Update typo to 1.35.3 by @Marvel-Gu in #1597
  • minor: Update cargo lock for rest catalog loader by @CTTY in #1596
  • feat(datafusion): Implement IcebergWriteExec for DataFusion write support by @CTTY in #1585
  • feat(arrow): Allow ArrowArrayAccessor to use field.name to match fields by @CTTY in #1561
  • fix(tests): resolve flaky catalog tests by waiting for S3 bucket creation by @fvaleye in #1599
  • chore(deps): Bump actions/checkout from 4 to 5 by @dependabot[bot] in #1613
  • chore(deps): Bump crate-ci/typos from 1.35.3 to 1.35.4 by @dependabot[bot] in #1614
  • chore(deps): Bump uuid from 1.17.0 to 1.18.0 by @dependabot[bot] in #1615
  • Refactor: remove unnecessary async for ArrowReader::read by @ZENOTME in #1608
  • feat(catalog): implement catalog loader for glue by @lliangyu-lin in #1603
  • Include license and notice files in published crates by @ankane in #1601
  • docs: tidying; update version refs; describe various catalogues by @atcol in #1616
  • feat(catalog): implement catalog loader for s3tables by @fvaleye in #1598
  • feat(catalog): Implement catalog loader for hms by @lliangyu-lin in #1612
  • feat(catalog): Implement update_table for GlueCatalog by @CTTY in #1584
  • fix(schema): check if new schema field names conflict with existing partition field names by @fvaleye in #1619
  • chore(deps): Bump crate-ci/typos from 1.35.4 to 1.35.5 by @dependabot[bot] in #1629
  • chore(deps): Bump tempfile from 3.20.0 to 3.21.0 by @dependabot[bot] in #1628
  • chore(deps): Bump aws-sdk-glue from 1.116.0 to 1.117.0 by @dependabot[bot] in #1627
  • feat(catalog): Implement register_table for glue catalog by @Yiyang-C in #1568
  • feat(catalog): Implement catalog loader for in memory by @lliangyu-lin in #1623
  • feat(datafusion): Implement insert_into for IcebergTableProvider by @CTTY in #1600
  • fix: await get catalog in datafusion integration test and update version in python binding by @lliangyu-lin in #1635
  • chore: Replace async-std with smol by @manuzhang in #1640
  • chore(deps): Bump tracing-subscriber from 0.3.19 to 0.3.20 by @dependabot[bot] in #1637
  • chore(deps): Bump aws-sdk-s3tables from 1.35.0 to 1.36.0 by @dependabot[bot] in #1642
  • chore(deps): Bump crate-ci/typos from 1.35.5 to 1.35.7 by @dependabot[bot] in #1641
  • chore(deps): Bump aws-sdk-glue from 1.117.0 to 1.118.0 by @dependabot[bot] in #1643
  • Allow V2 reader to read v1 manifests by @emkornfield in #1634
  • feat(writer): Make LocationGenerator partition-aware by @CTTY in #1625
  • feat(sqllogictest): Add sqllogictest schedule definition and parsing by @lliangyu-lin in #1630
  • fix: Add support for unsigned Arrow datatypes in schema conversion by @gkpanda4 in #1617
  • Partition Writer Support Part 1: add partition splitter by @ZENOTME in #1040
  • test: pyiceberg-core, pin datafusion and unpin pyarrow by @kevinjqliu in #1648
  • infra: no need to manually install crates in CI by @kevinjqliu in #1654
  • Add LICENSE and NOTICE files for pyiceberg-core source distribution and wheel by @sumanth-manchala in #1653
  • docs: add instructions to check license header in "How to verify a release" by @kevinjqliu in #1662
  • chore(deps): Bump actions/setup-python from 5 to 6 by @dependabot[bot] in #1658
  • upgrade MSRV from 1.85 to 1.87 by @kevinjqliu in #1655
  • chore(deps): Bump crate-ci/typos from 1.35.7 to 1.36.2 by @dependabot[bot] in #1659
  • ci: only use -Z direct-minimal-versions for MSRV check by @kevinjqliu in #1656
  • Bump Avro to 0.20 by @Fokko in #1644
  • Scan Delete Support Part 6: Equality Delete Parsing by @sdd in #1017
  • Remove rustversion pin by @Fokko in #1664
  • refactor(test): remove MockLocationGenerator and its usages (#1645) by @pushcoder in #1663
  • feat: bump datafusion to 48 by @colinmarc in #1501
  • chore: Add staleness bot for issues by @emkornfield in #1665
  • chore(deps): Bump actions/stale from 9.1.0 to 10.0.0 by @dependabot[bot] in #1671
  • chore(deps): Bump tempfile from 3.21.0 to 3.22.0 by @dependabot[bot] in #1672
  • docs: Update download links to 0.6.0 by @manuzhang in #1677
  • docs: Fix Podman and Orbstack pages not found by @manuzhang in #1678
  • Update bug report template with the latest version, 0.6.0 by @kevinjqliu in #1679
  • chore: Bump version to 0.7.0 by @CTTY in #1681
  • Expose Avro reader to PyIceberg by @Fokko in #1328
  • CI: Fix Nightly PyPi GitHub Action by @Fokko in #1683
  • chore: Update 0.7.0 change log to include avro reader by @CTTY in #1687
  • chore: Bump toolchain version to rust 1.87 and update dependencies list by @CTTY in #1688
  • ci: Don't run CI on unrelated changes by @manuzhang in #1686
  • CI: Fix Nightly PyPi GitHub Action by @kevinjqliu in #1689
  • infra: add check-msrv to Makefile by @kevinjqliu in #1680
  • feat: Enable zstd by @Fokko in #1692
  • docs: update "how to release" by @kevinjqliu in #1691
  • ci: Fix triggering CI by @manuzhang in #1693
  • feat: TableIdent derives PartialOrd by @DerGut in #1670
  • chore(deps): Bump ordered-float from 2.10.1 to 4.6.0 by @dependabot[bot] in #1700
  • chore(deps): Bump rust_decimal from 1.37.2 to 1.38.0 by @dependabot[bot] in #1699
  • Make SetExpression's constructor public by @thecatherinehuang in #1695
  • chore: Bump the Java integration test to 1.10.0 by @Fokko in #1701
  • chore: Bump Iceberg test fixtures to 1.10.0 by @Fokko in #1703
  • refactor: Move equality-ids closer to the spec by @Fokko in #1705
  • Add UUID support for the Avro schema by @Fokko in #1706
  • chore: Update change log to include the equality id spec fix by @CTTY in #1707
  • Add unit tests for UpdateStatisticsAction functionality. by @slfan1989 in #1675
  • Restore workflow triggering changes. by @liurenjie1024 in #1709

v0.6.0 - 2025-07-14

Breaking Changes

  • API Changes:

    • Change FieldSummary {upper,lower}_bound field types to ByteBuf (#1369)
    • Make Transaction own base_table instead of borrowing (#1421)
    • Remove current_table, updates, and requirements fields from Transaction (#1451)
    • Remove data_file_content field from FileScanTask (#1485)
  • Module Reorganization:

    • Rename iceberg-cli crate to iceberg-playground (#1427)
    • Move memory catalog from separate module into core (#1480)

All Changes

  • chore(deps): Bump ordered-float from 2.10.1 to 4.6.0 by @dependabot[bot] in #1374
  • fix: upgrade spark version by @ZENOTME in #1384
  • feat: Introduce snapshot summary properties by @dentiny in #1336
  • Change FieldSummary {upper,lower}_bound to ByteBuf by @Fokko in #1369
  • Revert "feat: Introduce snapshot summary properties (#1336)" by @liurenjie1024 in #1390
  • fix(iceberg-catalog-rest): set application/x-www-form-urlencoded content-type header for oauth2 request by @Erigara in #1393
  • feat: set snapshot summary property in append action by @dentiny in #1391
  • chore(deps): Bump aws-sdk-glue from 1.97.0 to 1.98.0 by @dependabot[bot] in #1403
  • chore(deps): Bump aws-sdk-s3tables from 1.22.0 to 1.23.0 by @dependabot[bot] in #1402
  • chore(deps): Bump ordered-float from 2.10.1 to 4.6.0 by @dependabot[bot] in #1401
  • Change download link to the 0.5.1 artifacts by @kevinjqliu in #1410
  • feat(storage-azdls): Add Azure Datalake Storage support by @DerGut in #1368
  • Add catalog builder trait by @liurenjie1024 in #1261
  • chore: Add manifest metadata accessor by @dentiny in #1399
  • [readme] Add moonlink to iceberg-rust users by @dentiny in #1418
  • Fix the minio config by @kevinjqliu in #1419
  • fix(iceberg): add_files correctly check duplicates by @Erigara in #1395
  • fix: fix float compare order by @ZENOTME in #1416
  • bug(storage-azdls): Fix inferred WASB endpoint by @DerGut in #1417
  • chore(deps): Bump crate-ci/typos from 1.32.0 to 1.33.1 by @dependabot[bot] in #1424
  • chore(deps): Bump aws-sdk-glue from 1.98.0 to 1.99.0 by @dependabot[bot] in #1423
  • Fix bug reporting project versions by @liurenjie1024 in #1425
  • Scan Delete Support Part 4: Delete File Loading; Skeleton for Processing by @sdd in #982
  • chore(deps): Bump aws-sdk-s3tables from 1.23.0 to 1.25.0 by @dependabot[bot] in #1422
  • fix: incorrect storage descriptor when creating tables in GlueCatalog by @geruh in #1429
  • feat(transaction): Add TransactionAction and related classes by @CTTY in #1420
  • feat(transaction): Make Transaction own base_table by @CTTY in #1421
  • Make key-metadata optional by @Fokko in #1434
  • Rename iceberg-cli crate to iceberg-playground by @xxchan in #1427
  • feat(transaction): Implement TransactionAction for updata_loc, update_props, and upgrade_format by @CTTY in #1433
  • chore(deps): Bump ordered-float from 2.10.1 to 4.6.0 by @dependabot[bot] in #1445
  • chore(deps): Bump aws-config from 1.6.2 to 1.6.3 by @dependabot[bot] in #1447
  • chore(deps): Bump serde_with from 3.12.0 to 3.13.0 by @dependabot[bot] in #1446
  • [ci] fix pypi publishing trigger by @kevinjqliu in #1444
  • feat: Public accessors for last_column_id and last_partition_id by @c-thiel in #1438
  • feat(transaction): Implement TransactionAction for ReplaceSortOrderAction by @CTTY in #1441
  • feat(transaction): Implement TransactionAction for FastAppendAction by @CTTY in #1448
  • fix: fix rewrite_not to process complex nested not by @ZENOTME in #1431
  • Add how to verify release doc by @liurenjie1024 in #1426
  • Update link to how to verify release. by @liurenjie1024 in #1461
  • feat(transaction): Remove current_table, updates, and requirements from Transaction by @CTTY in #1451
  • [infra] publish rc to pypi as part of release process by @kevinjqliu in #1449
  • feat(catalog): Add TableCommit::apply to help update metadata by @CTTY in #1464
  • feat(iceberg-catalog-rest): expose invalidate_token, regenerate_token APIs by @cmcarthur in #1465
  • feat: Support non-default adls-authority-host by @c-thiel in #1439
  • docs: add Transaction example by @jdockerty in #1436
  • feat(transaction): Add UpdateStatisticsAction by @CTTY in #1359
  • feat: add retryable property for Error by @ZENOTME in #1383
  • refine: refine manifest_evaluator to reject not explicitly by @ZENOTME in #1462
  • feat(catalog): Add ErrorKind::CatalogCommitConflicts by @CTTY in #1452
  • Allowing publishing iceberg-catalog-sql in workflow. by @liurenjie1024 in #1473
  • chore(deps): Bump volo-thrift from 0.10.7 to 0.10.8 by @dependabot[bot] in #1476
  • chore(deps): Bump volo from 0.10.6 to 0.10.7 by @dependabot[bot] in #1477
  • chore(deps): Bump the arrow-parquet group with 5 updates by @dependabot[bot] in #1475
  • chore: make Transaction cloneable by @dentiny in #1474
  • fix: fix location generator by @chenzl25 in #1479
  • Scan Delete Support Part 5: Positional Delete Parsing by @sdd in #1011
  • fix: fix batch transform modify schema by @chenzl25 in #1483
  • feat(datafusion): support metadata tables for Datafusion by @xxchan in #879
  • refine: add new_manifest_writer in SnapshotProducer by @ZENOTME in #1481
  • refine: remove data_file_content in FileScanTask by @ZENOTME in #1485
  • chore(deps): Bump crate-ci/typos from 1.33.1 to 1.34.0 by @dependabot[bot] in #1491
  • chore(deps): Bump serde_with from 3.13.0 to 3.14.0 by @dependabot[bot] in #1494
  • chore(deps): Bump tokio from 1.45.0 to 1.46.1 by @dependabot[bot] in #1493
  • chore(deps): Bump the arrow-parquet group with 4 updates by @dependabot[bot] in #1492
  • typo: FILED_ID_PROP -> FIELD_ID_PROP by @kevinjqliu in #1497
  • refactor: Move memory catalog into core by @Xuanwo in #1480
  • Remove unnecessary ignore attribute in doc. by @liurenjie1024 in #1504

[v0.5.0] - 2025-05-19

[v0.4.0] - 2024-12-16

v0.3.0 - 2024-08-14

v0.2.0 - 2024-02-20