This is an automated email from the ASF dual-hosted git repository.
kevinjqliu pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iceberg.git
The following commit(s) were added to refs/heads/main by this push:
new 5caeec64d0 Site: Add Iceberg-Go 0.5.0 release blog post (#15679)
5caeec64d0 is described below
commit 5caeec64d0ae0f86a68ad30f788c9e22eeb53721
Author: Matt Topol <[email protected]>
AuthorDate: Fri Mar 20 13:39:00 2026 -0400
Site: Add Iceberg-Go 0.5.0 release blog post (#15679)
---
.../posts/2026-03-05-iceberg-go-0.5.0-release.md | 143 +++++++++++++++++++++
1 file changed, 143 insertions(+)
diff --git a/site/docs/blog/posts/2026-03-05-iceberg-go-0.5.0-release.md
b/site/docs/blog/posts/2026-03-05-iceberg-go-0.5.0-release.md
new file mode 100644
index 0000000000..09e532963d
--- /dev/null
+++ b/site/docs/blog/posts/2026-03-05-iceberg-go-0.5.0-release.md
@@ -0,0 +1,143 @@
+---
+date: 2026-03-05
+title: Apache Iceberg Go 0.5.0 Release
+slug: apache-iceberg-go-0.5.0-release
+authors:
+ - iceberg-pmc
+categories:
+ - release
+---
+
+<!--
+ - Licensed to the Apache Software Foundation (ASF) under one or more
+ - contributor license agreements. See the NOTICE file distributed with
+ - this work for additional information regarding copyright ownership.
+ - The ASF licenses this file to You under the Apache License, Version 2.0
+ - (the "License"); you may not use this file except in compliance with
+ - the License. You may obtain a copy of the License at
+ -
+ - http://www.apache.org/licenses/LICENSE-2.0
+ -
+ - Unless required by applicable law or agreed to in writing, software
+ - distributed under the License is distributed on an "AS IS" BASIS,
+ - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ - See the License for the specific language governing permissions and
+ - limitations under the License.
+ -->
+
+The Apache Iceberg community is pleased to announce version 0.5.0 of
[iceberg-go](https://github.com/apache/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](https://github.com/apache/iceberg-go/compare/v0.4.0...v0.5.0) 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.
+
+<!-- more -->
+
+## Release Highlights
+
+### Iceberg V3 Table Spec Support
+
+This release significantly advances `iceberg-go`'s implementation of the
Iceberg V3 table specification:
+
+- **Table Metadata V3**: [Full V3 metadata format
support](https://github.com/apache/iceberg-go/pull/585) is now implemented
+- **Unknown Type**: [Support for the `Unknown`
type](https://github.com/apache/iceberg-go/pull/605) introduced in the V3 spec
+- **TimestampNano and TimestampNanoTz**: [New timestamp nanosecond
types](https://github.com/apache/iceberg-go/pull/594) required by V3 are now
supported
+- **Row Lineage Tracking**: [Row lineage
metadata](https://github.com/apache/iceberg-go/pull/659) is now tracked and the
[snapshot producer wires V3 row-lineage
state](https://github.com/apache/iceberg-go/pull/728) correctly, with a fix for
[first-row-id assignment in V3 manifest
lists](https://github.com/apache/iceberg-go/pull/741)
+- **Source IDs**: [Support for `source-ids`
metadata](https://github.com/apache/iceberg-go/pull/651) was added
+
+### View Support
+
+`iceberg-go` now has substantial support for Iceberg views:
+
+- **View Spec**: [Initial implementation of the View
specification](https://github.com/apache/iceberg-go/pull/600) including
serialization, deserialization, and JSON validation
+- **View Metadata Builder**: [Full view metadata
builder](https://github.com/apache/iceberg-go/pull/629) and `UpdateView` method
in the REST catalog
+- **Load View**: [Load existing
views](https://github.com/apache/iceberg-go/pull/640) from catalogs
+- **Hive Catalog View Operations**: [View create, load, drop, and list
support](https://github.com/apache/iceberg-go/pull/742) in the Hive catalog
+- **RCK Compatibility**: [Field ID preservation and error
handling](https://github.com/apache/iceberg-go/pull/647) for REST Catalog Kit
compatibility
+
+### Schema Evolution
+
+- **Schema evolution**: [Full schema evolution
support](https://github.com/apache/iceberg-go/pull/596) was added, enabling
`AddColumn`, `RenameColumn`, `UpdateColumnType`, and related operations
+- **HighestFieldID fixes**: Corrected `HighestFieldID` to [include the List
element ID](https://github.com/apache/iceberg-go/pull/609) and [fixed a related
bug](https://github.com/apache/iceberg-go/pull/611)
+
+### Delete File Support
+
+`iceberg-go` now supports both strategies for deleting rows from Iceberg
tables:
+
+- **Copy-on-Write deletes**: [Implemented `copy-on-write` delete
mode](https://github.com/apache/iceberg-go/pull/718) for rewriting data files
on delete
+- **Merge-on-Read deletes**: [Implemented `merge-on-read` delete
mode](https://github.com/apache/iceberg-go/pull/721) for writing position and
equality delete files
+- **Table overwrite**: [General table overwrite
functionality](https://github.com/apache/iceberg-go/pull/674) with a [clean
options-based API](https://github.com/apache/iceberg-go/pull/717)
+- **Add/replace data files**: [Functions to directly add or replace
DataFiles](https://github.com/apache/iceberg-go/pull/723) in a table
+
+### Hive Catalog
+
+- **Initial Hive Catalog support**: [Full Hive metastore
catalog](https://github.com/apache/iceberg-go/pull/678) was added, supporting
table creation, listing, loading, and dropping
+- **View operations in Hive**: [View
support](https://github.com/apache/iceberg-go/pull/742) was added alongside the
table operations
+
+### Puffin File Format
+
+A [Puffin reader and writer](https://github.com/apache/iceberg-go/pull/676)
was implemented, enabling `iceberg-go` to read and write Puffin statistics
files used for table statistics and NDV sketches.
+
+### Catalog Improvements
+
+- **AuthManager support**: [Pluggable authentication
manager](https://github.com/apache/iceberg-go/pull/579) for the REST catalog,
enabling custom credential flows
+- **WithHeaders**: [A `WithHeaders` catalog
option](https://github.com/apache/iceberg-go/pull/652) allows injecting custom
HTTP headers into REST catalog requests
+- **Staged table creation**: [Support for staged table
creation](https://github.com/apache/iceberg-go/pull/754) in the REST catalog
+- **ListNamespaces pagination**: [Pagination
support](https://github.com/apache/iceberg-go/pull/694) was added to
`ListNamespaces`
+- **RegisterTable fix**: [Corrected the `RegisterTable` REST
endpoint](https://github.com/apache/iceberg-go/pull/624)
+- **renameTable 204 handling**: [Properly handle `204 No
Content`](https://github.com/apache/iceberg-go/pull/633) responses on
`renameTable`
+
+### Write Performance
+
+- **Partitioned write throughput**: [Optimized partitioned write
throughput](https://github.com/apache/iceberg-go/pull/622) by reducing
allocations in the hot path
+- **Gzip metadata**: Support for both
[reading](https://github.com/apache/iceberg-go/pull/610) and
[writing](https://github.com/apache/iceberg-go/pull/612) gzip-compressed
metadata JSON files
+
+### IO Improvements
+
+- **IO registry pattern**: [Refactored IO scheme
registration](https://github.com/apache/iceberg-go/pull/709) to use a registry
pattern, making it easier to add custom IO backends
+- **S3 signing**: [Allow `s3.signer.uri`
property](https://github.com/apache/iceberg-go/pull/744) and only reject
explicit `s3.remote-signing-enabled=true`; also [set `x-amz-content-sha256`
before signing](https://github.com/apache/iceberg-go/pull/637)
+- **Azure SAS tokens**: [Updated SAS token
behaviour](https://github.com/apache/iceberg-go/pull/746) to match the Java
implementation
+
+### Bug Fixes
+
+Notable bug fixes in this release include:
+
+- [Fix truncate transform for negative
integers](https://github.com/apache/iceberg-go/pull/608)
+- [Fix data race in
`yieldDataFiles`](https://github.com/apache/iceberg-go/pull/650)
+- [Remove partition type cache causing concurrent map write
panic](https://github.com/apache/iceberg-go/pull/627)
+- [Preserve snapshot log
history](https://github.com/apache/iceberg-go/pull/638)
+- [Handle missing parent snapshots in
`ExpireSnapshots`](https://github.com/apache/iceberg-go/pull/671)
+- [Add `AssertRefSnapshotID` requirements to
`ExpireSnapshots`](https://github.com/apache/iceberg-go/pull/672)
+- [Support INT32/INT64 physical types for decimal
columns](https://github.com/apache/iceberg-go/pull/686)
+- [Fix decimal literal
`MarshalBinary`](https://github.com/apache/iceberg-go/pull/745)
+- [Fix index out of range in
`buildManifestEvaluator`](https://github.com/apache/iceberg-go/pull/692)
+- [Fix response body leaks in the REST
catalog](https://github.com/apache/iceberg-go/pull/655)
+- [Close writers on error for every exit
path](https://github.com/apache/iceberg-go/pull/667)
+- [Fix `findMinSeq` from manifest
list](https://github.com/apache/iceberg-go/pull/693)
+
+### 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](https://github.com/apache/iceberg-go/pull/629))
+- The fields of `catalog.CreateTableCfg` have been moved into an embedded
`commonCreateCfg` struct
([#754](https://github.com/apache/iceberg-go/pull/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](https://github.com/apache/iceberg-go/issues) for tracking work and the
[Apache Iceberg Community Slack](https://iceberg.apache.org/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](https://github.com/apache/iceberg-go/blob/main/CONTRIBUTING.md)
+3. Look for [good first
issues](https://github.com/apache/iceberg-go/contribute)
+
+For more information, visit the [iceberg-go
repository](https://github.com/apache/iceberg-go).