This is an automated email from the ASF dual-hosted git repository.
Jefffrey pushed a commit to branch 58_maintenance
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git
The following commit(s) were added to refs/heads/58_maintenance by this push:
new eaa9ada50b [58_maintenance] Update version to `58.4.1` and add
CHANGELOG (#11822)
eaa9ada50b is described below
commit eaa9ada50be0ef55065394ba506bdd0dae4ef1fd
Author: Andrew Lamb <[email protected]>
AuthorDate: Thu Oct 22 20:31:08 2026 -0400
[58_maintenance] Update version to `58.4.1` and add CHANGELOG (#11822)
# Which issue does this PR close?
- Part of https://github.com/apache/arrow-rs/issues/11665
# Rationale for this change
Prepare for the `58.4.1` patch release from the `58_maintenance` branch
# What changes are included in this PR?
1. Update version to `58.4.1`
2. Move the `58.4.0` changelog entry into `CHANGELOG-old.md`
3. Add `58.4.1` CHANGELOG (see rendered version
https://github.com/alamb/arrow-rs/blob/alamb/prepare_58.4.1/CHANGELOG.md)
Note: the changelog was generated with `git-cliff` using the
`cliff.toml` from `main` (the `58_maintenance` branch predates it), with
the "Full Changelog" compare link corrected to `58.4.0...58.4.1`. The
cargo-audit dependency bumps #11821 and #11794 appear under
"Miscellaneous" because they are not labeled `development-process`.
# Are these changes tested?
By CI
# Are there any user-facing changes?
New version and changelog
🤖 Generated with [Claude Code](https://claude.com/claude-code)
---------
Co-authored-by: Claude Fable 5.1 <[email protected]>
Co-authored-by: Jefffrey <[email protected]>
---
CHANGELOG-old.md | 14 ++++++++++
CHANGELOG.md | 38 +++++++++++++++++--------
Cargo.lock | 52 +++++++++++++++++------------------
Cargo.toml | 42 ++++++++++++++--------------
cliff.toml | 84 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 172 insertions(+), 58 deletions(-)
diff --git a/CHANGELOG-old.md b/CHANGELOG-old.md
index b35e601c4c..a66c4fea35 100644
--- a/CHANGELOG-old.md
+++ b/CHANGELOG-old.md
@@ -21,6 +21,20 @@
# Changelog
+## [58.4.0](https://github.com/apache/arrow-rs/tree/58.4.0) (2026-07-17)
+
+[Full Changelog](https://github.com/apache/arrow-rs/compare/58.3.0...58.4.0)
+
+**Merged pull requests:**
+
+- \[58\_maintenance\] \[parquet\] Allow more encryption algorithms (\#9203)
[\#10351](https://github.com/apache/arrow-rs/pull/10351)
[[parquet](https://github.com/apache/arrow-rs/labels/parquet)]
([mbutrovich](https://github.com/mbutrovich))
+- \[58\_maintenance\] Backport cargo audit fixes
[\#10369](https://github.com/apache/arrow-rs/pull/10369)
([alamb](https://github.com/alamb))
+- \[58\_maintenance\] chore: Ignore py03 vulnerabilities until upgrade
[\#10370](https://github.com/apache/arrow-rs/pull/10370)
([alamb](https://github.com/alamb))
+- \[58\_maintenance\] Add test for
\`parquet-testing/bad_data/ARROW-GH-47662.parquet\` (\#10077)
[\#10371](https://github.com/apache/arrow-rs/pull/10371)
[[parquet](https://github.com/apache/arrow-rs/labels/parquet)]
([alamb](https://github.com/alamb))
+
+
+\* *This Changelog was automatically generated by
[github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
+
## [58.3.0](https://github.com/apache/arrow-rs/tree/58.3.0) (2026-05-07)
[Full Changelog](https://github.com/apache/arrow-rs/compare/58.2.0...58.3.0)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index a5b2490eca..8c4d2389e5 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,16 +19,32 @@
# Changelog
-## [58.4.0](https://github.com/apache/arrow-rs/tree/58.4.0) (2026-07-17)
-[Full Changelog](https://github.com/apache/arrow-rs/compare/58.3.0...58.4.0)
+## [58.4.1](https://github.com/apache/arrow-rs/tree/58.4.1) - (2026-10-22)
+
+[Full Changelog](https://github.com/apache/arrow-rs/compare/58.4.0...58.4.1)
+
+### Bug fixes
+- [58_maintenance] Write empty validity buffers for arrays without nulls in
IPC writer by @mailmindlin in
[#11817](https://github.com/apache/arrow-rs/pull/11817)
+- [58_maintenance] fix: account for offsets in runarrays when using extend for
MutableArrayData by @Jefffrey in
[#11761](https://github.com/apache/arrow-rs/pull/11761)
+- [58_maintenance] fix(arrow-schema): validate `UnionFields` when
deserializing by @Jefffrey in
[#11760](https://github.com/apache/arrow-rs/pull/11760)
+- [58_maintenance] fix: implement `ArrayData::validate_values` for union types
by @Jefffrey in [#11762](https://github.com/apache/arrow-rs/pull/11762)
+- [58_maintenance] fix(arrow-data): check view nulls at the right index in
`ArrayData` equality by @Jefffrey in
[#11758](https://github.com/apache/arrow-rs/pull/11758)
+- [58_maintenance] fix(arrow-array): avoid returning corrupt array in
`GenericByteArray::into_builder` by @Jefffrey in
[#11707](https://github.com/apache/arrow-rs/pull/11707)
+- [58_maintenance] fix(arrow-buffer): prevent use-after-free in
Buffer::shrink_to_fit when MemoryReservation::resize panics by @alamb in
[#11785](https://github.com/apache/arrow-rs/pull/11785)
+- [58_maintenance] fix: account for arraydata offset when comparing runarrays
by @Jefffrey in [#11755](https://github.com/apache/arrow-rs/pull/11755)
+- [58_maintenance] fix(arrow-data): account for FixedSizeList parent offset in
MutableArrayData by @Jefffrey in
[#11756](https://github.com/apache/arrow-rs/pull/11756)
+- [58_maintenance] fix: use correct length in runarray validation by @Jefffrey
in [#11767](https://github.com/apache/arrow-rs/pull/11767)
+- [58_maintenance] fix: account for offset when building RunArray from
ArrayData by @Jefffrey in
[#11766](https://github.com/apache/arrow-rs/pull/11766)
+- [58_maintenance] fix: `UnionFields::from_iter` should validate input by
@Jefffrey in [#11763](https://github.com/apache/arrow-rs/pull/11763)
+- [58_maintenance] Fix sliced sparse union ArrayData conversion by @Jefffrey
in [#11759](https://github.com/apache/arrow-rs/pull/11759)
+- [58_maintenance] fix(arrow-array): use the field's type id in dense union
logical_nulls by @Jefffrey in
[#11757](https://github.com/apache/arrow-rs/pull/11757)
+- [58_maintenance] fix(arrow-array): `PrimitiveRunBuilder` was buggy after
`finish` by @Jefffrey in [#11704](https://github.com/apache/arrow-rs/pull/11704)
+- [58_maintenance] fix(arrow-data): fix gaps in ListView equality by @Jefffrey
in [#11703](https://github.com/apache/arrow-rs/pull/11703)
+- [58_maintenance] fix(arrow-array): preserve type params in
`PrimitiveArray::into_builder` by @Jefffrey in
[#11765](https://github.com/apache/arrow-rs/pull/11765)
+- [58_maintenance] fix: `Buffer::into_mutable` return error instead of panic
for converting owned sliced when not start at 0 and fix returned Mutable length
by @Jefffrey in [#11706](https://github.com/apache/arrow-rs/pull/11706)
+- [58_maintenance] fix: finish methods in `PrimitiveDictionaryBuilder` discard
type params by @Jefffrey in
[#11705](https://github.com/apache/arrow-rs/pull/11705)
+
+### Miscellaneous
+- [58_maintenance] Upgrade legacy Thrift dependency to 0.23 by @beinan in
[#11365](https://github.com/apache/arrow-rs/pull/11365)
-**Merged pull requests:**
-
-- \[58\_maintenance\] \[parquet\] Allow more encryption algorithms (\#9203)
[\#10351](https://github.com/apache/arrow-rs/pull/10351)
[[parquet](https://github.com/apache/arrow-rs/labels/parquet)]
([mbutrovich](https://github.com/mbutrovich))
-- \[58\_maintenance\] Backport cargo audit fixes
[\#10369](https://github.com/apache/arrow-rs/pull/10369)
([alamb](https://github.com/alamb))
-- \[58\_maintenance\] chore: Ignore py03 vulnerabilities until upgrade
[\#10370](https://github.com/apache/arrow-rs/pull/10370)
([alamb](https://github.com/alamb))
-- \[58\_maintenance\] Add test for
\`parquet-testing/bad_data/ARROW-GH-47662.parquet\` (\#10077)
[\#10371](https://github.com/apache/arrow-rs/pull/10371)
[[parquet](https://github.com/apache/arrow-rs/labels/parquet)]
([alamb](https://github.com/alamb))
-
-
-\* *This Changelog was automatically generated by
[github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
diff --git a/Cargo.lock b/Cargo.lock
index 038688848d..856512ef5b 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -170,7 +170,7 @@ dependencies = [
[[package]]
name = "arrow"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow-arith",
"arrow-array",
@@ -197,7 +197,7 @@ dependencies = [
[[package]]
name = "arrow-arith"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -209,7 +209,7 @@ dependencies = [
[[package]]
name = "arrow-array"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"ahash",
"arrow-buffer",
@@ -229,7 +229,7 @@ dependencies = [
[[package]]
name = "arrow-avro"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"apache-avro",
"arrow",
@@ -266,7 +266,7 @@ dependencies = [
[[package]]
name = "arrow-buffer"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"bytes",
"criterion",
@@ -278,7 +278,7 @@ dependencies = [
[[package]]
name = "arrow-cast"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -301,7 +301,7 @@ dependencies = [
[[package]]
name = "arrow-csv"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -319,7 +319,7 @@ dependencies = [
[[package]]
name = "arrow-data"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow-buffer",
"arrow-schema",
@@ -330,7 +330,7 @@ dependencies = [
[[package]]
name = "arrow-flight"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"anyhow",
"arrow-arith",
@@ -370,7 +370,7 @@ dependencies = [
[[package]]
name = "arrow-integration-test"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow",
"arrow-buffer",
@@ -383,7 +383,7 @@ dependencies = [
[[package]]
name = "arrow-integration-testing"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow",
"arrow-buffer",
@@ -402,7 +402,7 @@ dependencies = [
[[package]]
name = "arrow-ipc"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -421,7 +421,7 @@ dependencies = [
[[package]]
name = "arrow-json"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arbitrary",
"arrow-array",
@@ -452,7 +452,7 @@ dependencies = [
[[package]]
name = "arrow-ord"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -465,7 +465,7 @@ dependencies = [
[[package]]
name = "arrow-pyarrow"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow-array",
"arrow-data",
@@ -475,7 +475,7 @@ dependencies = [
[[package]]
name = "arrow-row"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -490,7 +490,7 @@ dependencies = [
[[package]]
name = "arrow-schema"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"bitflags",
"criterion",
@@ -503,7 +503,7 @@ dependencies = [
[[package]]
name = "arrow-select"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"ahash",
"arrow-array",
@@ -516,7 +516,7 @@ dependencies = [
[[package]]
name = "arrow-string"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow-array",
"arrow-buffer",
@@ -2328,7 +2328,7 @@ dependencies = [
[[package]]
name = "parquet"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"ahash",
"arrow",
@@ -2379,7 +2379,7 @@ dependencies = [
[[package]]
name = "parquet-geospatial"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow-schema",
"geo-traits",
@@ -2391,7 +2391,7 @@ dependencies = [
[[package]]
name = "parquet-variant"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow",
"arrow-schema",
@@ -2408,7 +2408,7 @@ dependencies = [
[[package]]
name = "parquet-variant-compute"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow",
"arrow-schema",
@@ -2425,7 +2425,7 @@ dependencies = [
[[package]]
name = "parquet-variant-json"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"arrow-schema",
"base64 0.22.1",
@@ -2437,7 +2437,7 @@ dependencies = [
[[package]]
name = "parquet_derive"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"parquet",
"proc-macro2",
@@ -2447,7 +2447,7 @@ dependencies = [
[[package]]
name = "parquet_derive_test"
-version = "58.4.0"
+version = "58.4.1"
dependencies = [
"chrono",
"parquet",
diff --git a/Cargo.toml b/Cargo.toml
index 8bdbc1f408..2ffbec95e6 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -68,7 +68,7 @@ exclude = [
]
[workspace.package]
-version = "58.4.0"
+version = "58.4.1"
repository = "https://github.com/apache/arrow-rs"
authors = ["Apache Arrow <[email protected]>"]
license = "Apache-2.0"
@@ -84,26 +84,26 @@ edition = "2024"
rust-version = "1.85"
[workspace.dependencies]
-arrow = { version = "58.4.0", path = "./arrow", default-features = false }
-arrow-arith = { version = "58.4.0", path = "./arrow-arith" }
-arrow-array = { version = "58.4.0", path = "./arrow-array" }
-arrow-buffer = { version = "58.4.0", path = "./arrow-buffer" }
-arrow-cast = { version = "58.4.0", path = "./arrow-cast" }
-arrow-csv = { version = "58.4.0", path = "./arrow-csv" }
-arrow-data = { version = "58.4.0", path = "./arrow-data" }
-arrow-ipc = { version = "58.4.0", path = "./arrow-ipc" }
-arrow-json = { version = "58.4.0", path = "./arrow-json" }
-arrow-ord = { version = "58.4.0", path = "./arrow-ord" }
-arrow-pyarrow = { version = "58.4.0", path = "./arrow-pyarrow" }
-arrow-row = { version = "58.4.0", path = "./arrow-row" }
-arrow-schema = { version = "58.4.0", path = "./arrow-schema" }
-arrow-select = { version = "58.4.0", path = "./arrow-select" }
-arrow-string = { version = "58.4.0", path = "./arrow-string" }
-parquet = { version = "58.4.0", path = "./parquet", default-features = false }
-parquet-geospatial = { version = "58.4.0", path = "./parquet-geospatial" }
-parquet-variant = { version = "58.4.0", path = "./parquet-variant" }
-parquet-variant-json = { version = "58.4.0", path = "./parquet-variant-json" }
-parquet-variant-compute = { version = "58.4.0", path =
"./parquet-variant-compute" }
+arrow = { version = "58.4.1", path = "./arrow", default-features = false }
+arrow-arith = { version = "58.4.1", path = "./arrow-arith" }
+arrow-array = { version = "58.4.1", path = "./arrow-array" }
+arrow-buffer = { version = "58.4.1", path = "./arrow-buffer" }
+arrow-cast = { version = "58.4.1", path = "./arrow-cast" }
+arrow-csv = { version = "58.4.1", path = "./arrow-csv" }
+arrow-data = { version = "58.4.1", path = "./arrow-data" }
+arrow-ipc = { version = "58.4.1", path = "./arrow-ipc" }
+arrow-json = { version = "58.4.1", path = "./arrow-json" }
+arrow-ord = { version = "58.4.1", path = "./arrow-ord" }
+arrow-pyarrow = { version = "58.4.1", path = "./arrow-pyarrow" }
+arrow-row = { version = "58.4.1", path = "./arrow-row" }
+arrow-schema = { version = "58.4.1", path = "./arrow-schema" }
+arrow-select = { version = "58.4.1", path = "./arrow-select" }
+arrow-string = { version = "58.4.1", path = "./arrow-string" }
+parquet = { version = "58.4.1", path = "./parquet", default-features = false }
+parquet-geospatial = { version = "58.4.1", path = "./parquet-geospatial" }
+parquet-variant = { version = "58.4.1", path = "./parquet-variant" }
+parquet-variant-json = { version = "58.4.1", path = "./parquet-variant-json" }
+parquet-variant-compute = { version = "58.4.1", path =
"./parquet-variant-compute" }
chrono = { version = "0.4.40", default-features = false, features = ["clock"] }
diff --git a/cliff.toml b/cliff.toml
new file mode 100644
index 0000000000..5cd02a498c
--- /dev/null
+++ b/cliff.toml
@@ -0,0 +1,84 @@
+# git-cliff ~ configuration file
+# https://git-cliff.org/docs/configuration
+
+[remote.github]
+# For token set GITHUB_TOKEN env var or pass via --github-token
+owner = "apache"
+repo = "arrow-rs"
+
+[changelog]
+# Otherwise it removes the left padding in the license header
+trim = false
+
+header = """
+<!---
+ 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.
+-->
+
+# Changelog
+"""
+body = """
+{%- macro remote_url() -%}
+ https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}
+{%- endmacro -%}
+
+{% if version %}
+## [{{ version }}]({{ self::remote_url() }}/tree/{{ version }}) - ({{
timestamp | date(format="%Y-%m-%d") }})
+{% else %}
+## [unreleased]
+{% endif %}
+[Full Changelog]({{ self::remote_url() }}/compare/{{ previous.version }}...{{
version }})
+{% for group, commits in commits | group_by(attribute="group") %}
+### {{ group | striptags | trim | upper_first }}
+ {%- for commit in commits %}
+- {% if commit.remote.pr_title %}{{ commit.remote.pr_title | trim }}{% else
%}{{ commit.message | split(pat="\n") | first | upper_first | trim }}{% endif
%}\
+ {% if commit.remote.username %} by @{{ commit.remote.username }}{%- endif
-%}
+ {% if commit.remote.pr_number %} in \
+ [#{{ commit.remote.pr_number }}]({{ self::remote_url() }}/pull/{{
commit.remote.pr_number }}) \
+ {%- endif -%}
+ {% endfor %}
+{% endfor %}
+"""
+
+[git]
+# We don't use conventional commits
+conventional_commits = false
+filter_unconventional = false
+require_conventional = false
+
+# To make backport releases easier
+use_branch_tags = true
+# Ignoring rc tags
+tag_pattern = "^\\d+\\.\\d+\\.\\d+$"
+
+commit_parsers = [
+ # Grouping based on PR labels
+ { field = "remote.pr_labels", pattern = "api-change", group = "<!-- 0
-->Breaking changes" },
+ { field = "remote.pr_labels", pattern = "security", group = "<!-- 1
-->Security fixes" },
+ { field = "remote.pr_labels", pattern = "enhancement", group = "<!-- 2
-->Enhancements" },
+ { field = "remote.pr_labels", pattern = "bug", group = "<!-- 3 -->Bug
fixes" },
+ { field = "remote.pr_labels", pattern = "performance", group = "<!-- 4
-->Performance improvements" },
+ { field = "remote.pr_labels", pattern = "documentation", group = "<!-- 5
-->Documentation updates" },
+ { field = "remote.pr_labels", pattern = "development-process", skip = true
},
+ # We could have a visible section for dependency updates if we want
+ { field = "remote.pr_labels", pattern = "auto-dependencies", skip = true },
+ # Ideally we minimize this last section as much as possible by ensuring PRs
+ # are labelled as above
+ { message = ".*", group = "<!-- 6 -->Miscellaneous" },
+]
+sort_commits = "newest"