Skip to content

Apache Iceberg Go 0.5.0 Release

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

This release covers approximately five months of development since the 0.4.0 release in October 2025 and is the result of merging over 110 PRs from 31 contributors, including 18 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 significantly advances iceberg-go's implementation of the Iceberg V3 table specification:

View Support🔗

iceberg-go now has substantial support for Iceberg views:

Schema Evolution🔗

Delete File Support🔗

iceberg-go now supports both strategies for deleting rows from Iceberg tables:

Hive Catalog🔗

  • Initial Hive Catalog support: Full Hive metastore catalog was added, supporting table creation, listing, loading, and dropping
  • View operations in Hive: View support was added alongside the table operations

Puffin File Format🔗

A Puffin reader and writer was implemented, enabling iceberg-go to read and write Puffin statistics files used for table statistics and NDV sketches.

Catalog Improvements🔗

Write Performance🔗

IO Improvements🔗

Bug Fixes🔗

Notable bug fixes in this release include:

Breaking Changes🔗

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

  • You now need to add import _ "github.com/apache/iceberg-go/io/gocloud" to register the storage implementations for S3, GCS, Azure and in-memory blobs. They are no longer registered by default, only the local filesystem implementation exists by default.
  • io.ParseAWSConfig is now in the gocloud package, though it wasn't expected that this would necessarily be used by many consumers anyways.
  • The table.Metadata interface has two new methods PartitionSpecByID and NextRowID, any packages that implemented their own Metadata object to meet the interface would need to add these methods. Though it is not expected that consumers would do this.
  • The rest.Catalog.CreateView function signature has changed (#629)
  • The fields of catalog.CreateTableCfg have been moved into an embedded commonCreateCfg struct (#754). Field access should still work via the inherited properties, but you should use NewCreateTableCfg() and the With* methods rather than attempting to construct this directly.

New Contributors🔗

Welcome to all 18 first-time contributors: @hamilton-earthscope, @itaigilo, @ankur-anand, @0xMALVEE, @el10savio, @rambleraptor, @vjanelle, @hdnpth, @dhananjaykrutika, @hackintoshrao, @csumisha, @ErenDursun, @dontirun, @alexandre-normand, @agaddis02, @mkuznets, @lovromazgon, @zhjwpku

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.