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 8102f4cb60 Site: Add Iceberg-Go 0.7.0 release blog post (#18341)
8102f4cb60 is described below

commit 8102f4cb60e23d53efaa5a15c87756dbadb06602
Author: Matt Topol <[email protected]>
AuthorDate: Thu Oct 1 21:37:28 2026 -0400

    Site: Add Iceberg-Go 0.7.0 release blog post (#18341)
---
 .../posts/2026-10-01-iceberg-go-0.7.0-release.md   | 176 +++++++++++++++++++++
 1 file changed, 176 insertions(+)

diff --git a/site/docs/blog/posts/2026-10-01-iceberg-go-0.7.0-release.md 
b/site/docs/blog/posts/2026-10-01-iceberg-go-0.7.0-release.md
new file mode 100644
index 0000000000..58e7cb5bbd
--- /dev/null
+++ b/site/docs/blog/posts/2026-10-01-iceberg-go-0.7.0-release.md
@@ -0,0 +1,176 @@
+---
+date: 2026-10-01
+title: Apache Iceberg Go 0.7.0 Release
+slug: apache-iceberg-go-0.7.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.7.0 of 
[iceberg-go](https://github.com/apache/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](https://github.com/apache/iceberg-go/compare/v0.6.0...v0.7.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 continues to close the gap with the Iceberg V3 table 
specification:
+
+- **Geometry and geography types**: [`geometry` and `geography` types with 
schema plumbing](https://github.com/apache/iceberg-go/pull/984), [WKB encoding 
and GeoArrow conversion](https://github.com/apache/iceberg-go/pull/1138), 
[PROJJSON CRS read/write 
support](https://github.com/apache/iceberg-go/pull/1426), [geo bounds emitted 
in manifest data files](https://github.com/apache/iceberg-go/pull/1371) and 
[aggregated at the manifest 
level](https://github.com/apache/iceberg-go/pull/1511), a [...]
+- **Variant shredding**: A [shredded variant 
reader](https://github.com/apache/iceberg-go/pull/1238) and an opt-in [shredded 
variant writer](https://github.com/apache/iceberg-go/pull/1351) with 
[type-uniformity inference](https://github.com/apache/iceberg-go/pull/1846), 
[bounds for shredded fields](https://github.com/apache/iceberg-go/pull/1478), 
and [predicate pushdown over shredded 
fields](https://github.com/apache/iceberg-go/pull/1607) using a new `extract` 
expression
+- **Deletion vectors**: The [scanner deletion-vector read 
path](https://github.com/apache/iceberg-go/pull/1053), [DV writes wired into 
the position-delete producer](https://github.com/apache/iceberg-go/pull/1113), 
[DVs for partitioned V3 
tables](https://github.com/apache/iceberg-go/pull/1151), [merging DVs on 
repeated merge-on-read 
deletes](https://github.com/apache/iceberg-go/pull/1419), [DV planning 
validations matching Java's 
`DeleteFileIndex`](https://github.com/apache/iceberg-go/pul [...]
+- **Row lineage**: [Row lineage preserved through copy-on-write 
rewrites](https://github.com/apache/iceberg-go/pull/1099), [`first_row_id` 
inherited for V1/V2-era manifests in V3 
tables](https://github.com/apache/iceberg-go/pull/1295), and [row-group pruning 
re-enabled with correct lineage 
tracking](https://github.com/apache/iceberg-go/pull/1250)
+- **Unknown transforms**: [Unknown partition and sort transforms can now be 
read](https://github.com/apache/iceberg-go/pull/1463) for forward compatibility
+- **Nanosecond timestamps**: Nanosecond support across 
[predicates](https://github.com/apache/iceberg-go/pull/1195), 
[year/month](https://github.com/apache/iceberg-go/pull/1196) and 
[bucket](https://github.com/apache/iceberg-go/pull/1197) transforms, [Substrait 
literals](https://github.com/apache/iceberg-go/pull/1590), and [partition 
values](https://github.com/apache/iceberg-go/pull/2034)
+
+### Metadata Tables and Incremental Scans
+
+`Table.Inspect` gained a full set of metadata tables, and two new incremental 
scan types were added:
+
+- **Metadata tables**: 
[`history`](https://github.com/apache/iceberg-go/pull/1465), 
[`snapshots`](https://github.com/apache/iceberg-go/pull/1476), 
[`metadata_log_entries`](https://github.com/apache/iceberg-go/pull/1696), 
[`refs`](https://github.com/apache/iceberg-go/pull/1695), 
[`manifests`](https://github.com/apache/iceberg-go/pull/1697), 
[`data_files`](https://github.com/apache/iceberg-go/pull/1698), 
[`delete_files`](https://github.com/apache/iceberg-go/pull/1699), 
[`entries`](https:// [...]
+- **Incremental append scan**: 
[`Table.NewIncrementalAppendScan`](https://github.com/apache/iceberg-go/pull/1702)
 plans data files added between two snapshots
+- **Incremental changelog scan**: 
[`Table.NewIncrementalChangelogScan`](https://github.com/apache/iceberg-go/pull/1883)
 produces file-level insert and delete tasks, along with [delete-file-backed 
changelog task types](https://github.com/apache/iceberg-go/pull/1897) as 
groundwork for row-level changelogs
+
+### 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:
+
+- **Foundations**: [Iceberg expression JSON 
parsing](https://github.com/apache/iceberg-go/pull/1212) and the [public 
scan-planning API surface](https://github.com/apache/iceberg-go/pull/1213)
+- **Client**: [Scan-planning client 
methods](https://github.com/apache/iceberg-go/pull/1324), a [`WaitForPlan` 
poller](https://github.com/apache/iceberg-go/pull/1469), and [decoding of REST 
scan tasks into `FileScanTask`s](https://github.com/apache/iceberg-go/pull/1492)
+- **Delegation**: [Complete server-side scan 
delegation](https://github.com/apache/iceberg-go/pull/1857), [concurrent 
fetching of remote plan tasks](https://github.com/apache/iceberg-go/pull/1959), 
and [retries, telemetry, and 
documentation](https://github.com/apache/iceberg-go/pull/2020)
+- **Correctness**: A [Java scan-planning integration 
suite](https://github.com/apache/iceberg-go/pull/1505) and [verification that 
REST planning produces tasks equivalent to local 
planning](https://github.com/apache/iceberg-go/pull/2019)
+
+### Metrics Reporting
+
+A new `metrics` package adds opt-in reporting for scans and commits:
+
+- **Reporter framework**: A [`Reporter` contract with built-in 
reporters](https://github.com/apache/iceberg-go/pull/1343), [report and wire 
types](https://github.com/apache/iceberg-go/pull/1421), and [reporter selection 
through catalog, table, and 
scan](https://github.com/apache/iceberg-go/pull/1430)
+- **Instrumentation**: [`ScanReport` emitted from scan 
planning](https://github.com/apache/iceberg-go/pull/1501) and [`CommitReport` 
emitted from commits](https://github.com/apache/iceberg-go/pull/1596), with 
[environment context in commit 
reports](https://github.com/apache/iceberg-go/pull/1680)
+- **Reporters**: A [REST metrics 
reporter](https://github.com/apache/iceberg-go/pull/1655) and an [OpenTelemetry 
reporter](https://github.com/apache/iceberg-go/pull/1767), documented in a 
[metrics reporting guide](https://github.com/apache/iceberg-go/pull/1862)
+
+### Row-Level Operations and Maintenance
+
+- **Merge-on-read writes**: A [`PositionDeltaWriter` for insert/reinsert 
splits](https://github.com/apache/iceberg-go/pull/1120), 
[`RowDelta.RemoveDeletes` for deletion-vector 
supersession](https://github.com/apache/iceberg-go/pull/1785), and a 
[`CommitEqualityDeletes` convenience 
API](https://github.com/apache/iceberg-go/pull/1835)
+- **Dynamic overwrite**: A [partition-match predicate for dynamic 
overwrite](https://github.com/apache/iceberg-go/pull/1217)
+- **Compaction**: [Partial rewrites committed per 
group](https://github.com/apache/iceberg-go/pull/1682), [compaction forced on 
file-scoped delete dead space](https://github.com/apache/iceberg-go/pull/1296), 
[`CollectDeadPositionDeletes` for leader-side 
expunge](https://github.com/apache/iceberg-go/pull/1434), [`RewriteFiles` able 
to add delete files](https://github.com/apache/iceberg-go/pull/1677), and 
[tunables bounding compaction pipeline 
memory](https://github.com/apache/iceberg-go/p [...]
+- **Rewrite manifests**: A [`RewriteManifests` maintenance task and CLI 
command](https://github.com/apache/iceberg-go/pull/1283) with [opt-in 
clustering](https://github.com/apache/iceberg-go/pull/1940)
+- **Sort order on write**: [The table's default sort order is now enforced on 
write](https://github.com/apache/iceberg-go/pull/1157)
+
+### Transactions and Schema Evolution
+
+- **Union schema evolution**: [Evolve a schema to the union of the current and 
an incoming schema by name](https://github.com/apache/iceberg-go/pull/1359), 
matching Java's `unionByNameWith`
+- **New transaction APIs**: 
[`Transaction.RemoveProperties`](https://github.com/apache/iceberg-go/pull/1751),
 
[`Transaction.ReplaceSortOrder`](https://github.com/apache/iceberg-go/pull/1833),
 
[`Transaction.AssertRefSnapshotID`](https://github.com/apache/iceberg-go/pull/1786),
 and an [explicit default spec/sort-order commit fence via 
`Transaction.AssertDefaultShape`](https://github.com/apache/iceberg-go/pull/1891)
+- **Partition specs**: [Added data files can target any registered partition 
spec](https://github.com/apache/iceberg-go/pull/1818)
+- **Branch-aware writes**: [Write planning resolves snapshots from the target 
branch head](https://github.com/apache/iceberg-go/pull/1839), 
[`RollbackToSnapshot` is scoped to the transaction's target 
branch](https://github.com/apache/iceberg-go/pull/1828), and [multi-table 
commits are fenced with the target branch 
requirement](https://github.com/apache/iceberg-go/pull/1858)
+- **Atomicity**: [Transaction apply is now 
atomic](https://github.com/apache/iceberg-go/pull/1416) and [transactions are 
only marked committed after a successful 
commit](https://github.com/apache/iceberg-go/pull/1603)
+
+### Catalog Improvements
+
+- **REST endpoint negotiation**: [The REST client honors the endpoints 
advertised by `/v1/config`](https://github.com/apache/iceberg-go/pull/1174)
+- **REST features**: [Rename 
view](https://github.com/apache/iceberg-go/pull/1461), [custom namespace 
separators](https://github.com/apache/iceberg-go/pull/1253), 
[`snapshot-loading-mode` support in 
`loadTable`](https://github.com/apache/iceberg-go/pull/1749), [catalog labels 
on the load table/view read 
path](https://github.com/apache/iceberg-go/pull/2013), and [`oauth2-server-uri` 
for the OAuth token endpoint](https://github.com/apache/iceberg-go/pull/1369)
+- **SQL UDFs**: A [SQL UDF metadata model 
package](https://github.com/apache/iceberg-go/pull/1418) and [read support 
through the REST catalog](https://github.com/apache/iceberg-go/pull/1432)
+- **Purge table**: A [`PurgeTable` optional 
interface](https://github.com/apache/iceberg-go/pull/1104) for physically 
deleting table files
+- **Hadoop catalog**: [Moved onto the generic IO 
interface](https://github.com/apache/iceberg-go/pull/1158) with [support for 
blob filesystems](https://github.com/apache/iceberg-go/pull/1350) and [opt-in 
arbitrary schemes](https://github.com/apache/iceberg-go/pull/1268)
+- **Hive catalog**: [Table drops and renames are 
locked](https://github.com/apache/iceberg-go/pull/1442), [HMS table metadata is 
synchronized on commit](https://github.com/apache/iceberg-go/pull/1486), and 
[lock retry behavior aligned with 
Java](https://github.com/apache/iceberg-go/pull/1763)
+- **Conformance tests**: A [shared catalog conformance test 
suite](https://github.com/apache/iceberg-go/pull/1694) now runs against every 
catalog implementation
+
+### Encryption Foundations
+
+Groundwork for Iceberg table encryption was added:
+
+- **Interfaces**: [`EncryptionManager` and `KeyManagementClient` interfaces 
with an in-memory KMS](https://github.com/apache/iceberg-go/pull/1447)
+- **KMS registry**: A [KMS catalog-property 
registry](https://github.com/apache/iceberg-go/pull/1493) selected through 
`encryption.kms-type` / `encryption.kms-impl`
+
+### IO Improvements
+
+- **Per-cloud packages**: [`io/gocloud` was split into per-cloud backend 
packages](https://github.com/apache/iceberg-go/pull/1961) so applications only 
link the cloud SDKs they use
+- **Azure**: [`ManagedIdentityCredential` 
support](https://github.com/apache/iceberg-go/pull/1062)
+- **S3**: [Connect timeout 
property](https://github.com/apache/iceberg-go/pull/1141), [compatibility with 
GCS HMAC endpoints](https://github.com/apache/iceberg-go/pull/1423), and 
[explicit `s3.*` credentials overriding the context AWS 
config](https://github.com/apache/iceberg-go/pull/1506)
+- **GCS**: [The GCS client authenticates with supplied 
credentials](https://github.com/apache/iceberg-go/pull/1503)
+- **Glue**: [`aws-profile` support for the Glue catalog in the CLI 
config](https://github.com/apache/iceberg-go/pull/1320)
+
+### 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:
+
+- **Parallel reads**: [Large Parquet files are split into scan tasks by 
row-group byte range](https://github.com/apache/iceberg-go/pull/1939), 
controlled by `read.split.target-size`
+- **Scan planning**: [Snapshot manifests cached across 
scans](https://github.com/apache/iceberg-go/pull/1970), [compiled filter and 
pruning plans cached](https://github.com/apache/iceberg-go/pull/1936), [scan 
columns projected during manifest 
reads](https://github.com/apache/iceberg-go/pull/1972), and [row limits honored 
during local planning](https://github.com/apache/iceberg-go/pull/1935)
+- **Delete handling**: [Equality deletes indexed by partition and 
sequence](https://github.com/apache/iceberg-go/pull/1752), [positional deletes 
indexed by path and partition](https://github.com/apache/iceberg-go/pull/1753), 
[equality and position deletes loaded lazily per scan 
task](https://github.com/apache/iceberg-go/pull/1963), and [equality deletes 
pruned by data-file metrics](https://github.com/apache/iceberg-go/pull/1960)
+- **Row-group pruning**: [Parquet row groups pruned by 
dictionary](https://github.com/apache/iceberg-go/pull/2006)
+- **Maintenance**: [Shared manifest reads deduplicated during snapshot 
expiration](https://github.com/apache/iceberg-go/pull/1118) and [orphan 
cleanup](https://github.com/apache/iceberg-go/pull/1133)
+- **Writes**: [Parquet dictionary encoding enabled by 
default](https://github.com/apache/iceberg-go/pull/931), matching Java Iceberg
+
+### Arrow Go v18.8
+
+`iceberg-go` now depends on [Apache Arrow 
Go](https://github.com/apache/arrow-go) v18.8.0, up from v18.6.0 in 0.6.0 
([#1504](https://github.com/apache/iceberg-go/pull/1504), 
[#2002](https://github.com/apache/iceberg-go/pull/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 canoni [...]
+
+### 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:
+
+- [Fix deletion vectors orphaned by data-file 
rewrites](https://github.com/apache/iceberg-go/pull/1221)
+- [Fix OCC rewrite 
resurrection](https://github.com/apache/iceberg-go/pull/1427)
+- [Fix `_row_id` renumbering when rows are dropped in a 
scan](https://github.com/apache/iceberg-go/pull/1237)
+- [Keep generated position deletes correct under row-group 
pruning](https://github.com/apache/iceberg-go/pull/1246)
+- [Apply positional deletes with batch-local `Take` 
indices](https://github.com/apache/iceberg-go/pull/1183)
+- [Fix manifest pruning when partition source columns are 
dropped](https://github.com/apache/iceberg-go/pull/1191)
+- [Fix incorrect pruning for `NOT STARTS WITH` over truncated string 
partitions](https://github.com/apache/iceberg-go/pull/1193)
+- [Truncate strings by Unicode code points instead of UTF-8 
bytes](https://github.com/apache/iceberg-go/pull/1223)
+- [Retain ref head snapshots in expire 
snapshots](https://github.com/apache/iceberg-go/pull/1842)
+- [Respect `gc.enabled` during snapshot 
expiration](https://github.com/apache/iceberg-go/pull/1737)
+- [Detect concurrently-removed data files in row-level 
deletes](https://github.com/apache/iceberg-go/pull/1298)
+- [Fix handling of partition specs with nested 
fields](https://github.com/apache/iceberg-go/pull/2015)
+- [Encode day-transform partition fields with the Avro date logical 
type](https://github.com/apache/iceberg-go/pull/915)
+- [Fix a big-endian alignment 
crash](https://github.com/apache/iceberg-go/pull/1194)
+- [Fix js/wasm builds by dropping `pterm` from the library 
path](https://github.com/apache/iceberg-go/pull/2061)
+
+### Breaking Changes
+
+Some of these changes are breaking changes that need to be called out:
+
+- **Scan concurrency option** 
([#1462](https://github.com/apache/iceberg-go/pull/1462)): the misspelled 
`WitMaxConcurrency` scan option was renamed to `WithScanMaxConcurrency`.
+- **Transform interface** 
([#1252](https://github.com/apache/iceberg-go/pull/1252)): `Transform` gained a 
type-aware `ToHumanStrType` method, which external `Transform` implementations 
must add. `ToHumanStr(any)` is deprecated.
+- **Hadoop catalog IO interfaces** 
([#1185](https://github.com/apache/iceberg-go/pull/1185)): the `MkdirIO` and 
`ReadDirIO` interfaces were removed in favor of `MkdirAll` and `WalkDir`.
+- **Hadoop catalog cloud schemes** 
([#1961](https://github.com/apache/iceberg-go/pull/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](https://github.com/apache/iceberg-go/pull/1286)): orphan file cleanup 
now requires the table's `FileIO` to implement `ListableIO`.
+- **Parquet dictionary encoding** 
([#931](https://github.com/apache/iceberg-go/pull/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](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).

Reply via email to