Skip to content

Apache Iceberg Go 0.7.0 Release

The Apache Iceberg community is pleased to announce version 0.7.0 of iceberg-go.

This release covers approximately four months of development since the 0.6.0 release in May 2026 and is the result of merging nearly 750 PRs from 53 contributors, including 33 first-time contributors. See the full changelog for the complete list of changes.

iceberg-go is a native Go implementation of the Apache Iceberg table format, providing libraries for reading, writing, and managing Iceberg tables in Go applications.

Release Highlights🔗

Iceberg V3 Table Spec Support🔗

This release continues to close the gap with the Iceberg V3 table specification:

Metadata Tables and Incremental Scans🔗

Table.Inspect gained a full set of metadata tables, and two new incremental scan types were added:

REST Server-Side Scan Planning🔗

iceberg-go can now delegate scan planning to a REST catalog that supports the scan-planning endpoints. Local planning remains the default; remote planning is opt-in:

Metrics Reporting🔗

A new metrics package adds opt-in reporting for scans and commits:

Row-Level Operations and Maintenance🔗

Transactions and Schema Evolution🔗

Catalog Improvements🔗

Encryption Foundations🔗

Groundwork for Iceberg table encryption was added:

IO Improvements🔗

Performance🔗

More than 120 performance PRs landed in this release, touching nearly every part of the read, write, and planning paths. Some of the highlights:

Arrow Go v18.8🔗

iceberg-go now depends on Apache Arrow Go v18.8.0, up from v18.6.0 in 0.6.0 (#1504, #2002), so applications importing both modules will resolve arrow-go to at least v18.8.0. The new compute.VariantGet kernel backs variant extract, with a zero-copy fast path for fields shredded to the queried type. Variant columns are now written with the canonical arrow.parquet.variant Arrow extension name; 0.7.0 reads both the canonical and legacy parquet.variant names, but older iceberg-go readers will not recognize the new name during a mixed-version rolling upgrade.

Bug Fixes🔗

Nearly 400 bug fixes landed in this release, many of them hardening validation, JSON decoding, and defensive copying across the public API. Notable fixes include:

Breaking Changes🔗

Some of these changes are breaking changes that need to be called out:

  • Scan concurrency option (#1462): the misspelled WitMaxConcurrency scan option was renamed to WithScanMaxConcurrency.
  • Transform interface (#1252): Transform gained a type-aware ToHumanStrType method, which external Transform implementations must add. ToHumanStr(any) is deprecated.
  • Hadoop catalog IO interfaces (#1185): the MkdirIO and ReadDirIO interfaces were removed in favor of MkdirAll and WalkDir.
  • Hadoop catalog cloud schemes (#1961): catalog/hadoop no longer registers cloud schemes as a side effect. Users on cloud storage must blank-import the matching io backend package. The existing io/gocloud symbols remain available as deprecated aliases.
  • Orphan cleanup (#1286): orphan file cleanup now requires the table's FileIO to implement ListableIO.
  • Parquet dictionary encoding (#931): data files are now written with dictionary encoding enabled by default.

New Contributors🔗

Welcome to all 33 first-time contributors: @mithilgirish, @paveon, @sungwy, @Revanth14, @rraulinio, @artbcf, @gerinsp, @jeremybarner, @strophy, @neu-hsc, @ebyhr, @abnobdoss, @AhmedDlshad007, @nanookclaw, @prafulla-kiran, @rasta-rocket, @the-onewho-knocks, @iremcaginyurtturk, @hankivstmb, @jx2lee, @1991santhu, @mattfaltyn, @dgvj-work, @dimakuz, @ryanworl, @technicolorbeat, @codeAnqiang-ma, @deepak-2605, @smaheshwar-pltr, @ajiteshsingh, @sgg, @KranzL, @shoemoney

Getting Involved🔗

The iceberg-go 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:

  1. Try iceberg-go with your workloads and report any issues you encounter
  2. Review the contributor guide
  3. Look for good first issues

For more information, visit the iceberg-go repository.