What's Changed
- chore: bump cpr to 1.14.1 by @HeartLinked in #535
- chore: post release 0.2.0 by @wgtmac in #536
- chore(deps): bump actions/checkout from 6.0.1 to 6.0.2 by @dependabot[bot] in #529
- chore: refactor Transaction::Apply to use separate smaller functions by @zhjwpku in #527
- chore(doc): fix minimum compiler version by @HuaHuaY in #528
- chore: update copyright year to 2026 by @zhjwpku in #537
- refactor(rest): Switch HttpClient to use connection pool by @HeartLinked in #530
- test: add test case for table scan planning by @wgtmac in #492
- feat: add update partition stats by @HeartLinked in #538
- chore: consolidate json serde file names by @zhjwpku in #539
- fix: SetSnapshotRef::ApplyTo should call SetRef by @zhjwpku in #540
- fix(cmake): require Parquet when using system Arrow by @MisterRaindrop in #541
- refactor: replace std::vformat with std::format for ListType|MapType::ToString by @HeartLinked in #545
- fix(test): fix missing registering of avro map logical type by @HeartLinked in #547
- test: Rename TypeTest to VisitTypeTest to avoid naming conflict by @HeartLinked in #546
- refactor: Reduce extra lookup in RegisterTable by @mzibitsker in #549
- refactor(manifest): remove MakeVxWriter functions in favor of MakeWriter by @zhjwpku in #551
- feat: add json serde for expression operations by @evindj in #532
- fix: use std::move when passing by value in the config by @SYaoJun in #555
- chore: remove unnecessary header inclusion by @zhjwpku in #554
- refactor: use std::from_chars instead of stoi/stoll/stod by @HuaHuaY in #556
- chore: improve the pre-commit requirement by @SYaoJun in #557
- feat: add support to select columns in table scan planning by @wgtmac in #550
- chore(deps): bump nanoarrow to 0.8.0 by @lishuxu in #558
- feat: Implement NoopAuthManager and integrate it with RestCatalog by @lishuxu in #544
- infra: set github actions max-parallel to 15 by @kevinjqliu in #565
- ci: Remove unused strategy sections from non-matrix jobs by @kevinjqliu in #566
- doc: add AI-assisted contributions guidelines by @zhjwpku in #568
- fix: fix grammar errors in comments by @shangxinli in #569
- fix: fix misspelled variable, missing format arg, and wrong pointer assignment by @shangxinli in #570
- CI: Add CodeQL workflow for GitHub Actions security scanning by @kevinjqliu in #567
- chore(ci): add explicit least-privilege workflow permissions by @kevinjqliu in #573
- chore(deps): bump actions/checkout from 4 to 6 by @dependabot[bot] in #574
- feat: add SnapshotManager by @zhjwpku in #542
- feat: implement DataWriter for Iceberg data files by @shangxinli in #552
- fix: use strtod fallback when std::from_chars(float) unavailable by @zhjwpku in #572
- refactor: Use RestCatalogProperties by value instead of unique_ptr by @lishuxu in #575
- feat: Implement BasicAuthManager to support basic authentication by @lishuxu in #564
- refactor: Optimize SnapshotUtil ancestor methods with early return by @WZhuo in #560
- chore(deps): bump actions/download-artifact from 7 to 8 by @dependabot[bot] in #580
- chore: use ubuntu-slim for lightweight jobs by @zhjwpku in #578
- chore(deps): bump actions/upload-artifact from 6.0.0 to 7.0.0 by @dependabot[bot] in #579
- fix: add missing direct include of in file_writer.h by @shangxinli in #584
- feat: add json serde for expressions by @evindj in #553
- fix(ci): windows ci should return error if build fails by @wgtmac in #586
- feat: Add incremental scan API by @WZhuo in #559
- feat: implement truncate max for literals by @WZhuo in #585
- feat: implement UpdateMapping and apply meta change to UpdateSchema by @zhjwpku in #561
- feat: Implement PositionDeleteWriter for position delete files by @shangxinli in #582
- feat: Implement EqualityDeleteWriter for equality delete files by @shangxinli in #583
- refactor: introduce TransactionContext to decouple Transaction and PendingUpdate by @wgtmac in #591
- feat: bind literals with right type after serde by @evindj in #562
- chore: add ai related files to .gitignore by @wgtmac in #593
- feat(rest): add initial oauth2 support to rest catalog by @lishuxu in #577
- feat(rest): support snapshot loading mode by @HeartLinked in #543
- fix: use base_location instead of location in CreateTable by @WZhuo in #594
- chore(deps): update nanoarrow download url by @wgtmac in #596
- Infra: Remove GitHub Actions from Dependabot configuration by @kevinjqliu in #597
- feat(puffin): add basic data structures and constants by @zhaoxuan1994 in #588
- fix: use secure random for UUID generation by @wgtmac in #602
- fix: add using StructType::Equals to fix
-Woverloaded-virtualwarning by @WZhuo in #601 - feat: add roaring-based position bitmap by @wgtmac in #595
- feat: Impl IncrementalAppendScan by @WZhuo in #590
- feat: add position delete index by @wgtmac in #605
- feat: metrics for avro writer by @WZhuo in #604
- feat: add StructLikeSet by @wgtmac in #598
- docs: restructure and improve documentation website by @wgtmac in #606
- fix: update metadata_location_ in Table::Refresh() method by @linguoxuan in #612
- feat(data): add DeleteLoader for position and equality delete files by @wgtmac in #610
- feat/perf: optimize AddRange in RoaringPositionBitmap by @Baunsgaard in #608
- feat(rest): support namespace separator by @wgtmac in #617
- feat: add s3 file io integration by @MisterRaindrop in #548
- feat(puffin): add format constants, utilities, and JSON serialization by @zhaoxuan1994 in #603
- ci: apply github workflow best practice (zizmor/codeql/asf-allowlist-check) by @kevinjqliu in #618
- feat: implement incremental changelog scan by @WZhuo in #611
- chore: add more ai related .gitignore by @HuaHuaY in #621
- ci: set zizmor min-severity and min-confidence to medium by @kevinjqliu in #620
- chore(deps): bump actions/upload-artifact from 7.0.0 to 7.0.1 by @dependabot[bot] in #622
- chore: bump arrow-cpp to 24.0.0 by @wgtmac in #623
- feat: add ReachableFileCleanup to expire snapshots by @shangxinli in #592
- feat: retry failed transaction commit by @linguoxuan in #626
- fix(ci): restore auth for docs gh-pages deploy by @wgtmac in #625
- fix: typo in RoaringPositionBitmap deletion vector note by @zhjwpku in #632
- chore(deps): bump github/codeql-action from 4.35.1 to 4.35.2 by @dependabot[bot] in #629
- chore(deps): bump zizmorcore/zizmor-action from 0.5.2 to 0.5.3 by @dependabot[bot] in #630
- fix: concurrent Lazy::Get should get correct result by @HuaHuaY in #634
- chore(deps): bump mozilla-actions/sccache-action from 0.0.9 to 0.0.10 by @dependabot[bot] in #636
- fix: repair shared package linkage and export scan builder symbols by @zhjwpku in #635
- feat: add iceberg_data library alongside iceberg by @zhjwpku in #631
- fix(cmake): use consistent generator expressions to link libraries by @zhjwpku in #639
- ci: use ilammy/msvc-dev-cmd for Windows MSVC environment by @zhjwpku in #643
- refactor(util): make retry policy explicit and deterministic by @wgtmac in #633
- ci: split S3/MinIO into a Linux and macOS-only workflow by @zhjwpku in #642
- CI: Use specific patch versions in workflow action comments by @kevinjqliu in #644
- feat(io): add streaming FileIO support by @wgtmac in #641
- feat(data): add delete filter support by @wgtmac in #650
- chore(deps): bump github/codeql-action from 4.35.2 to 4.35.3 by @dependabot[bot] in #647
- chore(deps): bump github/codeql-action from 4.35.3 to 4.35.4 by @dependabot[bot] in #654
- build: sync Meson project version with CMake by @slfan1989 in #655
- fix: preserve snapshot ID width in UseRef by @fallintoplace in #661
- feat(manifest): add ManifestFilterManager and ManifestMergeManager by @gty404 in #652
- feat: add IncrementalFileCleanup strategy and dispatch in ExpireSnapshots::Finalize by @shangxinli in #648
- fix(parquet): check compression codec availability by @wgtmac in #656
- feat(io): add bulk delete API to FileIO. by @slfan1989 in #659
- fix(ci): fix macOS ci to use provided fmt by @slfan1989 in #670
- feat(data): add MOR file scan task reader by @wgtmac in #657
- feat: Add v3 timestamp nanosecond primitive types by @zhjwpku in #653
- fix: evaluate ManifestGroup file filters by @fallintoplace in #664
- fix: disallow zoned and non-zoned literal comparisons by @zhjwpku in #676
- chore(deps): bump github/codeql-action from 4.35.4 to 4.35.5 by @dependabot[bot] in #677
- chore(deps): bump zizmorcore/zizmor-action from 0.5.3 to 0.5.6 by @dependabot[bot] in #678
- chore(ci): skip actions for draft PRs by @zhjwpku in #680
- refactor: move temporal utilities out of transform util by @zhjwpku in #675
- feat: metrics for parquet writer by @WZhuo in #651
- fix(parquet): fix parquet writer metrics conversion by @wgtmac in #681
- feat(data): coalesce position deletes into range inserts by @Baunsgaard in #645
- ci: update pre-commit workflow permissions to write by @gty404 in #683
- fix(meson): add missing install headers for meson by @wgtmac in #684
- feat(puffin): add puffin file reader and writer by @zhaoxuan1994 in #624
- fix: correct StrictMetricsEvaluator::CanContainNulls/CanContainNaNs when field missing from stats map by @sentomk in #686
- docs: add Iceberg security model by @sungwy in #688
- chore(deps): bump github/codeql-action from 4.35.5 to 4.36.0 by @dependabot[bot] in #691
- build(hive): add ICEBERG_BUILD_HIVE option and skeleton by @MisterRaindrop in #689
- doc: bump minimum Clang version to 18 by @zhjwpku in #695
- feat: add MergingSnapshotUpdate by @gty404 in #682
- chore: normalize license headers by @zhjwpku in #692
- feat(rest): implement OAuth2 token auto-refresh for REST catalog by @lishuxu in #646
- feat(catalog): add SQL catalog by @zhjwpku in #693
- feat: support Iceberg v3 unknown type by @manuzhang in #662
- feat: add executor pool support by @HuaHuaY in #687
- chore: update LICENSE of FnOnce by @HuaHuaY in #698
- feat: metrics reporting for scan and commit by @evindj in #589
- chore: upgrade avro and remove fmt in ci script by @HuaHuaY in #704
- chore: release candidate version string by @zhjwpku in #705
- build: install generated version header by @manuzhang in #710
- feat(hive): vendor Hive 3.1 metastore + fb303 Thrift IDL by @MisterRaindrop in #694
- feat(rest): add scan plan endpoints to REST catalog client by @gsandeep1241 in #614
- chore: disable installing googletest libs by @zhjwpku in #711
- fix: avoid stale gh run watch in RC release script by @wgtmac in #712
- fix: align manifest partition reads with reassigned IDs by @wgtmac in #700
- fix(rest): use "ref" field name for AssertRefSnapshotId requirement by @plusplusjiajia in #702
- fix: Assign UUID when creating table metadata by @WZhuo in #713
- fix: YearTransform passes wrong TransformType kTruncate instead of kYear by @WZhuo in #715
- fix: make release script more robust by @wgtmac in #717
New Contributors
- @mzibitsker made their first contribution in #549
- @evindj made their first contribution in #532
- @SYaoJun made their first contribution in #555
- @zhaoxuan1994 made their first contribution in #588
- @linguoxuan made their first contribution in #612
- @Baunsgaard made their first contribution in #608
- @fallintoplace made their first contribution in #661
- @sentomk made their first contribution in #686
- @sungwy made their first contribution in #688
- @manuzhang made their first contribution in #662
- @gsandeep1241 made their first contribution in #614
Full Changelog: v0.2.0...v0.3.0