From 8a175957b552e57aba70c8cb56f3fffbd9105ccf Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Tue, 28 Apr 2026 20:41:12 +0000 Subject: [PATCH 1/2] [Release] Add release notes for Arrow Go 18.6.0 --- _posts/2026-04-28-arrow-go-18.6.0.md | 116 +++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 _posts/2026-04-28-arrow-go-18.6.0.md diff --git a/_posts/2026-04-28-arrow-go-18.6.0.md b/_posts/2026-04-28-arrow-go-18.6.0.md new file mode 100644 index 000000000000..62d0c551b996 --- /dev/null +++ b/_posts/2026-04-28-arrow-go-18.6.0.md @@ -0,0 +1,116 @@ +--- +layout: post +title: "Apache Arrow Go 18.6.0 Release" +date: "2026-04-28 00:00:00" +author: pmc +categories: [release] +--- + + +The Apache Arrow team is pleased to announce the v18.6.0 release of Apache Arrow Go. +This minor release covers 46 commits from 16 distinct contributors. + +## Contributors +```console +$ git shortlog -sn v18.5.2..v18.6.0 + 25 Matt Topol + 6 Sebastiaan van Stijn + 2 Dima Kuznetsov + 2 Willem Jan + 1 Alex + 1 Alex Normand + 1 Andrei Tserakhau + 1 Ben Bellick + 1 David Li + 1 Harrison Crosse + 1 Karen Li + 1 Lucas Valente + 1 junyan-ling + 1 starpact + 1 wjywbs + 1 wwarner-inf +``` + +## Changelog + +### What's Changed +* chore(dev/post-website): improve email generation by @zeroshade in [#685](https://github.com/apache/arrow-go/pull/685) +* chore(fixup): silly mistake by @zeroshade in [#686](https://github.com/apache/arrow-go/pull/686) +* chore(dev/release): use release/KEYS instead of dev/KEYS by @zeroshade in [#683](https://github.com/apache/arrow-go/pull/683) +* fix(arrow/flight/session): fix flaky race condition test by @zeroshade in [#687](https://github.com/apache/arrow-go/pull/687) +* feat(parquet/file): pre-allocate BinaryBuilder data buffer using column chunk metadata to eliminate resize overhead by @junyan-ling in [#689](https://github.com/apache/arrow-go/pull/689) +* fix(arrow-go/flightsql): route QueryContext through active transaction by @wjywbs in [#692](https://github.com/apache/arrow-go/pull/692) +* fix(parquet/file): use adaptive batch sizing to avoid panic by @zeroshade in [#690](https://github.com/apache/arrow-go/pull/690) +* fix: add nullability to struct type String() by @Willem-J-an in [#700](https://github.com/apache/arrow-go/pull/700) +* perf(arrow/compute): improve take kernel perf by @zeroshade in [#702](https://github.com/apache/arrow-go/pull/702) +* perf(arrow/array): pre-alloc bulk appends by @zeroshade in [#699](https://github.com/apache/arrow-go/pull/699) +* perf(parquet): dictionary impl cleanup by @zeroshade in [#701](https://github.com/apache/arrow-go/pull/701) +* fix(parquet/pqarrow): fix Decimal256 sign extension by @dimakuz in [#711](https://github.com/apache/arrow-go/pull/711) +* perf(parquet): remove string concatenation in hot debug assert by @starpact in [#708](https://github.com/apache/arrow-go/pull/708) +* fix(avro): correctly set nullability for ListType by @Willem-J-an in [#709](https://github.com/apache/arrow-go/pull/709) +* perf(parquet/file): avoid double bool bitmap conversion by @zeroshade in [#707](https://github.com/apache/arrow-go/pull/707) +* fix(compute): fix data race and memory leak in concurrent is_in kernel by @laskoviymishka in [#712](https://github.com/apache/arrow-go/pull/712) +* perf(parquet/compress): set zstd pool encoder concurrency to 1 by @dimakuz in [#717](https://github.com/apache/arrow-go/pull/717) +* perf(parquet): optimize stats and bloom filters for bool columns by @zeroshade in [#715](https://github.com/apache/arrow-go/pull/715) +* fix(parquet): strip repetition_type from root SchemaElement during serialization by @hcrosse in [#723](https://github.com/apache/arrow-go/pull/723) +* chore: Update CI with Go 1.25/1.26 by @zeroshade in [#725](https://github.com/apache/arrow-go/pull/725) +* Test and fix for bug in selectMapimpl by @wwarner-inf in [#726](https://github.com/apache/arrow-go/pull/726) +* chore: pin docker/login-action for ASF allowlist by @lidavidm in [#729](https://github.com/apache/arrow-go/pull/729) +* fix(parquet/pqarrow): return an error on pqarrow write calls if the writer is already closed by @alexandre-normand in [#728](https://github.com/apache/arrow-go/pull/728) +* ci: fix mingw GO_VERSION by @zeroshade in [#733](https://github.com/apache/arrow-go/pull/733) +* ci: fix tinygo build with maphash by @zeroshade in [#734](https://github.com/apache/arrow-go/pull/734) +* perf(parquet/internal/encoding): vectorize amd64 bool unpack by @zeroshade in [#735](https://github.com/apache/arrow-go/pull/735) +* perf(parquet): eliminate per-value allocation in delta bit-pack decoder by @zeroshade in [#730](https://github.com/apache/arrow-go/pull/730) +* fix(parquet): eagerly release adaptive bloom filter candidate buffers + skip flaky flight tests in CI by @zeroshade in [#743](https://github.com/apache/arrow-go/pull/743) +* perf(parquet): vectorize ARM64 NEON bool unpacking for ~4x throughput by @zeroshade in [#731](https://github.com/apache/arrow-go/pull/731) +* fix: eliminate per-element heap allocs in is_in kernel for binary types by @zeroshade in [#745](https://github.com/apache/arrow-go/pull/745) +* chore: Bump github.com/substrait-io/substrait-go from v7.6.0 to v8.0.0 by @benbellick in [#754](https://github.com/apache/arrow-go/pull/754) +* chore(deps): replace golang/snappy with klauspost/compress/snappy by @thaJeztah in [#762](https://github.com/apache/arrow-go/pull/762) +* chore: remove mentions of compatibility with go toolchain < go1.18 by @thaJeztah in [#760](https://github.com/apache/arrow-go/pull/760) +* fix(arrow/cdata, arrow/flight): fix handling of colons in values and fix potential panics by @thaJeztah in [#761](https://github.com/apache/arrow-go/pull/761) +* test(parquet/file): add regression test for mixed-size ByteArray WriteBatch by @kli19 in [#757](https://github.com/apache/arrow-go/pull/757) +* chore: remove tools.go files in favor of go.mod "tool" directive by @thaJeztah in [#759](https://github.com/apache/arrow-go/pull/759) +* refactor(parquet/cmd): replace uses of github.com/docopt/docopt-go by @thaJeztah in [#764](https://github.com/apache/arrow-go/pull/764) +* feat(arrow/compute): sort support by @hamilton-earthscope in [#749](https://github.com/apache/arrow-go/pull/749) +* chore: replace golang.org/x/xerrors for stdlib errors by @thaJeztah in [#763](https://github.com/apache/arrow-go/pull/763) +* fix(arrow): formatting lint issue by @zeroshade in [#770](https://github.com/apache/arrow-go/pull/770) +* feat(arrow/array): add Validate/ValidateFull to binary and string arrays by @zeroshade in [#747](https://github.com/apache/arrow-go/pull/747) +* `UnsafeAppendBoolToBitmap` for dictionary and REE builders by @serramatutu in [#758](https://github.com/apache/arrow-go/pull/758) +* perf: optimize ARM64 NEON min/max assembly by @zeroshade in [#748](https://github.com/apache/arrow-go/pull/748) +* fix(parquet/pqarrow): normalize the element name in the stored ARROW:schema by @zeroshade in [#746](https://github.com/apache/arrow-go/pull/746) +* fix(parquet): clarify docstring on Close method of FileWriter, proper err output by @zeroshade in [#774](https://github.com/apache/arrow-go/pull/774) +* feat(arrow/array): Add new arreflect package by @zeroshade in [#771](https://github.com/apache/arrow-go/pull/771) +* chore(arrow): bump to v18.6.0 by @zeroshade in [#778](https://github.com/apache/arrow-go/pull/778) + +### New Contributors +* @junyan-ling made their first contribution in [#689](https://github.com/apache/arrow-go/pull/689) +* @wjywbs made their first contribution in [#692](https://github.com/apache/arrow-go/pull/692) +* @dimakuz made their first contribution in [#711](https://github.com/apache/arrow-go/pull/711) +* @starpact made their first contribution in [#708](https://github.com/apache/arrow-go/pull/708) +* @laskoviymishka made their first contribution in [#712](https://github.com/apache/arrow-go/pull/712) +* @hcrosse made their first contribution in [#723](https://github.com/apache/arrow-go/pull/723) +* @wwarner-inf made their first contribution in [#726](https://github.com/apache/arrow-go/pull/726) +* @alexandre-normand made their first contribution in [#728](https://github.com/apache/arrow-go/pull/728) +* @benbellick made their first contribution in [#754](https://github.com/apache/arrow-go/pull/754) +* @thaJeztah made their first contribution in [#762](https://github.com/apache/arrow-go/pull/762) +* @kli19 made their first contribution in [#757](https://github.com/apache/arrow-go/pull/757) +* @serramatutu made their first contribution in [#758](https://github.com/apache/arrow-go/pull/758) + +**Full Changelog**: https://github.com/apache/arrow-go/compare/v18.5.2...v18.6.0 From 0ef52a9b9161fa1adf7eb7ba32f993de417668b1 Mon Sep 17 00:00:00 2001 From: Matt Topol Date: Tue, 28 Apr 2026 17:06:39 -0400 Subject: [PATCH 2/2] add highlights --- _posts/2026-04-28-arrow-go-18.6.0.md | 87 ++++++++++++---------------- 1 file changed, 37 insertions(+), 50 deletions(-) diff --git a/_posts/2026-04-28-arrow-go-18.6.0.md b/_posts/2026-04-28-arrow-go-18.6.0.md index 62d0c551b996..2e4457af1205 100644 --- a/_posts/2026-04-28-arrow-go-18.6.0.md +++ b/_posts/2026-04-28-arrow-go-18.6.0.md @@ -48,56 +48,43 @@ $ git shortlog -sn v18.5.2..v18.6.0 1 wwarner-inf ``` -## Changelog - -### What's Changed -* chore(dev/post-website): improve email generation by @zeroshade in [#685](https://github.com/apache/arrow-go/pull/685) -* chore(fixup): silly mistake by @zeroshade in [#686](https://github.com/apache/arrow-go/pull/686) -* chore(dev/release): use release/KEYS instead of dev/KEYS by @zeroshade in [#683](https://github.com/apache/arrow-go/pull/683) -* fix(arrow/flight/session): fix flaky race condition test by @zeroshade in [#687](https://github.com/apache/arrow-go/pull/687) -* feat(parquet/file): pre-allocate BinaryBuilder data buffer using column chunk metadata to eliminate resize overhead by @junyan-ling in [#689](https://github.com/apache/arrow-go/pull/689) -* fix(arrow-go/flightsql): route QueryContext through active transaction by @wjywbs in [#692](https://github.com/apache/arrow-go/pull/692) -* fix(parquet/file): use adaptive batch sizing to avoid panic by @zeroshade in [#690](https://github.com/apache/arrow-go/pull/690) -* fix: add nullability to struct type String() by @Willem-J-an in [#700](https://github.com/apache/arrow-go/pull/700) -* perf(arrow/compute): improve take kernel perf by @zeroshade in [#702](https://github.com/apache/arrow-go/pull/702) -* perf(arrow/array): pre-alloc bulk appends by @zeroshade in [#699](https://github.com/apache/arrow-go/pull/699) -* perf(parquet): dictionary impl cleanup by @zeroshade in [#701](https://github.com/apache/arrow-go/pull/701) -* fix(parquet/pqarrow): fix Decimal256 sign extension by @dimakuz in [#711](https://github.com/apache/arrow-go/pull/711) -* perf(parquet): remove string concatenation in hot debug assert by @starpact in [#708](https://github.com/apache/arrow-go/pull/708) -* fix(avro): correctly set nullability for ListType by @Willem-J-an in [#709](https://github.com/apache/arrow-go/pull/709) -* perf(parquet/file): avoid double bool bitmap conversion by @zeroshade in [#707](https://github.com/apache/arrow-go/pull/707) -* fix(compute): fix data race and memory leak in concurrent is_in kernel by @laskoviymishka in [#712](https://github.com/apache/arrow-go/pull/712) -* perf(parquet/compress): set zstd pool encoder concurrency to 1 by @dimakuz in [#717](https://github.com/apache/arrow-go/pull/717) -* perf(parquet): optimize stats and bloom filters for bool columns by @zeroshade in [#715](https://github.com/apache/arrow-go/pull/715) -* fix(parquet): strip repetition_type from root SchemaElement during serialization by @hcrosse in [#723](https://github.com/apache/arrow-go/pull/723) -* chore: Update CI with Go 1.25/1.26 by @zeroshade in [#725](https://github.com/apache/arrow-go/pull/725) -* Test and fix for bug in selectMapimpl by @wwarner-inf in [#726](https://github.com/apache/arrow-go/pull/726) -* chore: pin docker/login-action for ASF allowlist by @lidavidm in [#729](https://github.com/apache/arrow-go/pull/729) -* fix(parquet/pqarrow): return an error on pqarrow write calls if the writer is already closed by @alexandre-normand in [#728](https://github.com/apache/arrow-go/pull/728) -* ci: fix mingw GO_VERSION by @zeroshade in [#733](https://github.com/apache/arrow-go/pull/733) -* ci: fix tinygo build with maphash by @zeroshade in [#734](https://github.com/apache/arrow-go/pull/734) -* perf(parquet/internal/encoding): vectorize amd64 bool unpack by @zeroshade in [#735](https://github.com/apache/arrow-go/pull/735) -* perf(parquet): eliminate per-value allocation in delta bit-pack decoder by @zeroshade in [#730](https://github.com/apache/arrow-go/pull/730) -* fix(parquet): eagerly release adaptive bloom filter candidate buffers + skip flaky flight tests in CI by @zeroshade in [#743](https://github.com/apache/arrow-go/pull/743) -* perf(parquet): vectorize ARM64 NEON bool unpacking for ~4x throughput by @zeroshade in [#731](https://github.com/apache/arrow-go/pull/731) -* fix: eliminate per-element heap allocs in is_in kernel for binary types by @zeroshade in [#745](https://github.com/apache/arrow-go/pull/745) -* chore: Bump github.com/substrait-io/substrait-go from v7.6.0 to v8.0.0 by @benbellick in [#754](https://github.com/apache/arrow-go/pull/754) -* chore(deps): replace golang/snappy with klauspost/compress/snappy by @thaJeztah in [#762](https://github.com/apache/arrow-go/pull/762) -* chore: remove mentions of compatibility with go toolchain < go1.18 by @thaJeztah in [#760](https://github.com/apache/arrow-go/pull/760) -* fix(arrow/cdata, arrow/flight): fix handling of colons in values and fix potential panics by @thaJeztah in [#761](https://github.com/apache/arrow-go/pull/761) -* test(parquet/file): add regression test for mixed-size ByteArray WriteBatch by @kli19 in [#757](https://github.com/apache/arrow-go/pull/757) -* chore: remove tools.go files in favor of go.mod "tool" directive by @thaJeztah in [#759](https://github.com/apache/arrow-go/pull/759) -* refactor(parquet/cmd): replace uses of github.com/docopt/docopt-go by @thaJeztah in [#764](https://github.com/apache/arrow-go/pull/764) -* feat(arrow/compute): sort support by @hamilton-earthscope in [#749](https://github.com/apache/arrow-go/pull/749) -* chore: replace golang.org/x/xerrors for stdlib errors by @thaJeztah in [#763](https://github.com/apache/arrow-go/pull/763) -* fix(arrow): formatting lint issue by @zeroshade in [#770](https://github.com/apache/arrow-go/pull/770) -* feat(arrow/array): add Validate/ValidateFull to binary and string arrays by @zeroshade in [#747](https://github.com/apache/arrow-go/pull/747) -* `UnsafeAppendBoolToBitmap` for dictionary and REE builders by @serramatutu in [#758](https://github.com/apache/arrow-go/pull/758) -* perf: optimize ARM64 NEON min/max assembly by @zeroshade in [#748](https://github.com/apache/arrow-go/pull/748) -* fix(parquet/pqarrow): normalize the element name in the stored ARROW:schema by @zeroshade in [#746](https://github.com/apache/arrow-go/pull/746) -* fix(parquet): clarify docstring on Close method of FileWriter, proper err output by @zeroshade in [#774](https://github.com/apache/arrow-go/pull/774) -* feat(arrow/array): Add new arreflect package by @zeroshade in [#771](https://github.com/apache/arrow-go/pull/771) -* chore(arrow): bump to v18.6.0 by @zeroshade in [#778](https://github.com/apache/arrow-go/pull/778) +## Highlights + +### Arrow + +#### Features + +* compute package now has Sorting functions [#749](https://github.com/apache/arrow-go/pull/749) +* Brand new `array/arreflect` package for round-trip reflection between Arrow and Go types/structs [#771](https://github.com/apache/arrow-go/pull/771) + +#### Bug Fixes + +* Route QueryContext for flightsql through active transactions [#692](https://github.com/apache/arrow-go/pull/692) +* Correctly set nullbility for Avro list type [#709](https://github.com/apache/arrow-go/pull/709) +* Fix data race and memory leak in is_in kernel [#712](https://github.com/apache/arrow-go/pull/712) +* Fix cdata handling colons in values [#761](https://github.com/apache/arrow-go/pull/761) + +#### Performance Improvements + +* Improved take kernel performance (20-30% gains for 99% of cases) [#702](https://github.com/apache/arrow-go/pull/702) +* Optimize the ARM64 NEON min/max assembly [#748](https://github.com/apache/arrow-go/pull/748) + +### Parquet + +#### Bug Fixes + +* Fixed Decimal256 sign extension [#711](https://github.com/apache/arrow-go/pull/711) +* Strip the repetition_type from the root SchemaElement during serialization [#723](https://github.com/apache/arrow-go/pull/723) +* Normalized the element name in stored ARROW:schema [#746](https://github.com/apache/arrow-go/pull/746) + +#### Performance Improvements + +* Avoid double bool bitmap conversion [#707](https://github.com/apache/arrow-go/pull/707) +* Improve zstd pool memory usage (14x less memory!) [#717](https://github.com/apache/arrow-go/pull/717) +* Optimized stats and bloom filters for boolean columns (76% less memory, more than twice as fast) [#715](https://github.com/apache/arrow-go/pull/715) +* Vectorized bool unpack (~4x throughput) [#735](https://github.com/apache/arrow-go/pull/735), [#731](https://github.com/apache/arrow-go/pull/731) +* Eliminated per-value allocation in delta bit-pack decoder (>4x faster decoding) [#730](https://github.com/apache/arrow-go/pull/730) + ### New Contributors * @junyan-ling made their first contribution in [#689](https://github.com/apache/arrow-go/pull/689)