From fcc24fb71242104456b96913c90e3953ff333c65 Mon Sep 17 00:00:00 2001 From: Jefffrey Date: Tue, 28 Jul 2026 20:40:24 +0900 Subject: [PATCH 01/10] Better changelog generation via git-cliff --- EXAMPLE_CHANGELOG.md | 84 ++++++++++++++++++++++++++++++++++++++++++++ cliff.toml | 84 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 168 insertions(+) create mode 100644 EXAMPLE_CHANGELOG.md create mode 100644 cliff.toml diff --git a/EXAMPLE_CHANGELOG.md b/EXAMPLE_CHANGELOG.md new file mode 100644 index 000000000000..f9b9de56c18c --- /dev/null +++ b/EXAMPLE_CHANGELOG.md @@ -0,0 +1,84 @@ + + +# Changelog + + +## [59.2.0](https://github.com/apache/arrow-rs/tree/59.2.0) - (2026-07-28) + +[Full Changelog](https://github.com/apache/arrow-rs/compare/59.1.0...59.2.0) + +### Bug fixes +- Fix(arrow-json): render coerced f32 as its value in the string decoder (#10386) by @hareshkh in [#10386](https://github.com/apache/arrow-rs/pull/10386) + +### Performance improvements +- Perf(parquet): slice up contiguous buffer for decimals and fsb (#10364) by @MassivePizza in [#10364](https://github.com/apache/arrow-rs/pull/10364) +- Feat(parquet): `RowSelection` can be backed by a `BooleanBuffer` (#10141) by @haohuaijin in [#10141](https://github.com/apache/arrow-rs/pull/10141) +- Perf(parquet): use Cursor in ZSTDCodec to avoid Vec alloc and copy (#10345) by @MassivePizza in [#10345](https://github.com/apache/arrow-rs/pull/10345) +- Optimize(parquet): Nested list batching child.write calls (#10085) by @mapleFU in [#10085](https://github.com/apache/arrow-rs/pull/10085) +- Perf(parquet): splice buffered pages with `write_all` instead of `io::copy` (adapts #10052) (#10353) by @adriangb in [#10353](https://github.com/apache/arrow-rs/pull/10353) +- Hoist calls for null_sentinel (#10356) by @Rich-T-kid in [#10356](https://github.com/apache/arrow-rs/pull/10356) +- Perf: speed up substring_by_char with an ASCII fast path and single-pass bounds (#10334) by @andygrove in [#10334](https://github.com/apache/arrow-rs/pull/10334) +- Cache encoded field name in FieldEncoder (#10296) by @MassivePizza in [#10296](https://github.com/apache/arrow-rs/pull/10296) +- Perf: allow users to skip utf8 validation (#10319) by @Rich-T-kid in [#10319](https://github.com/apache/arrow-rs/pull/10319) +- Perf: Improve decimal addition and subtraction when scale is equal (#10333) by @AdamGS in [#10333](https://github.com/apache/arrow-rs/pull/10333) +- Optimize(interleave): implement interleave for FixedSizeList/Map type (#10046) by @mapleFU in [#10046](https://github.com/apache/arrow-rs/pull/10046) +- Perf: Pre-size buffer allocations to avoid intermediate allocations (#10262) by @Rich-T-kid in [#10262](https://github.com/apache/arrow-rs/pull/10262) +- Perf: create dictionary reader config and default unsafeflag to false (#10260) by @Rich-T-kid in [#10260](https://github.com/apache/arrow-rs/pull/10260) +- Perf: Introduce zero copy path when tonic returns an aligned buffer (#10273) by @Rich-T-kid in [#10273](https://github.com/apache/arrow-rs/pull/10273) +- Validate short view strings in separate buffer in arrow-row (#10250) by @Jefffrey in [#10250](https://github.com/apache/arrow-rs/pull/10250) + +### Documentation updates +- Docs: clarify decimal negative scale behavior (#10304) by @ByteBaker in [#10304](https://github.com/apache/arrow-rs/pull/10304) +- Docs: fix mutableArrayData comments (#10326) by @Rich-T-kid in [#10326](https://github.com/apache/arrow-rs/pull/10326) +- Docs: trim release schedule for released versions (#10280) by @alamb in [#10280](https://github.com/apache/arrow-rs/pull/10280) +- Align parquet-geospatial crate docs with README (#10302) by @paleolimbot in [#10302](https://github.com/apache/arrow-rs/pull/10302) + +### Miscellaneous +- Fix(parquet): restore opaque return type for `RowSelection::iter` (#10450) by @haohuaijin in [#10450](https://github.com/apache/arrow-rs/pull/10450) +- Feat(arrow-ipc): add sans-IO stream encoder (#10277) by @Phoenix500526 in [#10277](https://github.com/apache/arrow-rs/pull/10277) +- Support suffix white space in arrow-cast parse (#10396) by @Rich-T-kid in [#10396](https://github.com/apache/arrow-rs/pull/10396) +- Refactor(parquet): split `arrow_reader/selection` into smaller modules (#10434) by @haohuaijin in [#10434](https://github.com/apache/arrow-rs/pull/10434) +- Chore: deduplicate filter nulls code in coalesce/filter kernel (#10348) by @Jefffrey in [#10348](https://github.com/apache/arrow-rs/pull/10348) +- Avro: bound VLQDecoder::long against overlong varints (#10407) by @STiFLeR7 in [#10407](https://github.com/apache/arrow-rs/pull/10407) +- Feat(coalesce): add size function (#10331) by @rluvaton in [#10331](https://github.com/apache/arrow-rs/pull/10331) +- Arrow-row: Fix decode_fixed_size_list to apply the corrected_type step for dictionary children (#10414) by @zhuqi-lucas in [#10414](https://github.com/apache/arrow-rs/pull/10414) +- [Variant] make `value` mandatory field for `VariantArray`/`ShreddingState` (#10318) by @sdf-jkl in [#10318](https://github.com/apache/arrow-rs/pull/10318) +- Fix off by one error for slice accounting (#10406) by @Rich-T-kid in [#10406](https://github.com/apache/arrow-rs/pull/10406) +- Fix: `GenericByteViewArray::gc()` drops inline views on the multi-buffer slow path (#10287) by @adriangb in [#10287](https://github.com/apache/arrow-rs/pull/10287) +- Fix(parquet): support mask filtering across skipped pages (#10288) by @hhhizzz in [#10288](https://github.com/apache/arrow-rs/pull/10288) +- Support white space prefixed parse for ints and floats (#10374) by @Rich-T-kid in [#10374](https://github.com/apache/arrow-rs/pull/10374) +- Fix(arrow-cast): make `b64_encode` reject invalid UTF-8 from misbehaving `Engine` impls (#10324) by @bit2swaz in [#10324](https://github.com/apache/arrow-rs/pull/10324) +- Make more of i256 available in const code (#10363) by @AdamGS in [#10363](https://github.com/apache/arrow-rs/pull/10363) +- Chore: remove parquet dependency from parquet_derive (#10327) by @ByteBaker in [#10327](https://github.com/apache/arrow-rs/pull/10327) +- Expose builder buffer capacity accessors (#10342) by @Weijun-H in [#10342](https://github.com/apache/arrow-rs/pull/10342) +- Add interval multiplication by i64 (#10336) by @peterxcli in [#10336](https://github.com/apache/arrow-rs/pull/10336) +- Make `parquet-index` work with column paths (#10330) by @korowa in [#10330](https://github.com/apache/arrow-rs/pull/10330) +- Fix: take FFI_ArrowArrayStream errno values from libc (#10299) by @fornwall in [#10299](https://github.com/apache/arrow-rs/pull/10299) +- Fix(arrow-data): allow full dictionary key range when concatenating (#10323) by @raphaelroshan in [#10323](https://github.com/apache/arrow-rs/pull/10323) +- Feat(arrow-csv): add support for parsing `Float16` (#10343) by @Glatzel in [#10343](https://github.com/apache/arrow-rs/pull/10343) +- Remove the unmaintained paste dependency from arrow (#10303) by @Phoenix500526 in [#10303](https://github.com/apache/arrow-rs/pull/10303) +- Don't panic on invalid c ffi schema name (#10328) by @robert3005 in [#10328](https://github.com/apache/arrow-rs/pull/10328) +- Chore: formalize the default map field names to match default arrow spec (#10297) by @rluvaton in [#10297](https://github.com/apache/arrow-rs/pull/10297) +- Fix(REE): check upfront if sorting empty array or 0 limit (#10293) by @Jefffrey in [#10293](https://github.com/apache/arrow-rs/pull/10293) +- [Variant] Add `variant_to_arrow` `Map` type support (#10307) by @sdf-jkl in [#10307](https://github.com/apache/arrow-rs/pull/10307) +- Fix(arrow-avro): bound untrusted OCF block size and item counts (#10237) by @miniex in [#10237](https://github.com/apache/arrow-rs/pull/10237) +- Fix(arrow-array): disallow creating `MapArray` with nullable key field (#10272) by @rluvaton in [#10272](https://github.com/apache/arrow-rs/pull/10272) +- Fix: don't panic on `ArrayData::try_new` on bad input even when `force_validate` feature is on (#10282) by @rluvaton in [#10282](https://github.com/apache/arrow-rs/pull/10282) + diff --git a/cliff.toml b/cliff.toml new file mode 100644 index 000000000000..6da8ac561bc9 --- /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 = """ + + +# 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 %} +- {{ commit.message | split(pat="\n") | first | upper_first | trim }}\ + {% 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 = "Breaking changes" }, + { field = "remote.pr_labels", pattern = "security", group = "Security fixes" }, + { field = "remote.pr_labels", pattern = "enhancement", group = "Enhancements" }, + { field = "remote.pr_labels", pattern = "bug", group = "Bug fixes" }, + { field = "remote.pr_labels", pattern = "performance", group = "Performance improvements" }, + { field = "remote.pr_labels", pattern = "documentation", group = "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 = "Miscellaneous" }, +] +sort_commits = "newest" From 36c20e2f94294b34c9446a4707ebbd8aa474ffb6 Mon Sep 17 00:00:00 2001 From: Jefffrey Date: Fri, 31 Jul 2026 12:49:09 +0900 Subject: [PATCH 02/10] Remove EXAMPLE_CHANGELOG.md --- EXAMPLE_CHANGELOG.md | 84 -------------------------------------------- 1 file changed, 84 deletions(-) delete mode 100644 EXAMPLE_CHANGELOG.md diff --git a/EXAMPLE_CHANGELOG.md b/EXAMPLE_CHANGELOG.md deleted file mode 100644 index f9b9de56c18c..000000000000 --- a/EXAMPLE_CHANGELOG.md +++ /dev/null @@ -1,84 +0,0 @@ - - -# Changelog - - -## [59.2.0](https://github.com/apache/arrow-rs/tree/59.2.0) - (2026-07-28) - -[Full Changelog](https://github.com/apache/arrow-rs/compare/59.1.0...59.2.0) - -### Bug fixes -- Fix(arrow-json): render coerced f32 as its value in the string decoder (#10386) by @hareshkh in [#10386](https://github.com/apache/arrow-rs/pull/10386) - -### Performance improvements -- Perf(parquet): slice up contiguous buffer for decimals and fsb (#10364) by @MassivePizza in [#10364](https://github.com/apache/arrow-rs/pull/10364) -- Feat(parquet): `RowSelection` can be backed by a `BooleanBuffer` (#10141) by @haohuaijin in [#10141](https://github.com/apache/arrow-rs/pull/10141) -- Perf(parquet): use Cursor in ZSTDCodec to avoid Vec alloc and copy (#10345) by @MassivePizza in [#10345](https://github.com/apache/arrow-rs/pull/10345) -- Optimize(parquet): Nested list batching child.write calls (#10085) by @mapleFU in [#10085](https://github.com/apache/arrow-rs/pull/10085) -- Perf(parquet): splice buffered pages with `write_all` instead of `io::copy` (adapts #10052) (#10353) by @adriangb in [#10353](https://github.com/apache/arrow-rs/pull/10353) -- Hoist calls for null_sentinel (#10356) by @Rich-T-kid in [#10356](https://github.com/apache/arrow-rs/pull/10356) -- Perf: speed up substring_by_char with an ASCII fast path and single-pass bounds (#10334) by @andygrove in [#10334](https://github.com/apache/arrow-rs/pull/10334) -- Cache encoded field name in FieldEncoder (#10296) by @MassivePizza in [#10296](https://github.com/apache/arrow-rs/pull/10296) -- Perf: allow users to skip utf8 validation (#10319) by @Rich-T-kid in [#10319](https://github.com/apache/arrow-rs/pull/10319) -- Perf: Improve decimal addition and subtraction when scale is equal (#10333) by @AdamGS in [#10333](https://github.com/apache/arrow-rs/pull/10333) -- Optimize(interleave): implement interleave for FixedSizeList/Map type (#10046) by @mapleFU in [#10046](https://github.com/apache/arrow-rs/pull/10046) -- Perf: Pre-size buffer allocations to avoid intermediate allocations (#10262) by @Rich-T-kid in [#10262](https://github.com/apache/arrow-rs/pull/10262) -- Perf: create dictionary reader config and default unsafeflag to false (#10260) by @Rich-T-kid in [#10260](https://github.com/apache/arrow-rs/pull/10260) -- Perf: Introduce zero copy path when tonic returns an aligned buffer (#10273) by @Rich-T-kid in [#10273](https://github.com/apache/arrow-rs/pull/10273) -- Validate short view strings in separate buffer in arrow-row (#10250) by @Jefffrey in [#10250](https://github.com/apache/arrow-rs/pull/10250) - -### Documentation updates -- Docs: clarify decimal negative scale behavior (#10304) by @ByteBaker in [#10304](https://github.com/apache/arrow-rs/pull/10304) -- Docs: fix mutableArrayData comments (#10326) by @Rich-T-kid in [#10326](https://github.com/apache/arrow-rs/pull/10326) -- Docs: trim release schedule for released versions (#10280) by @alamb in [#10280](https://github.com/apache/arrow-rs/pull/10280) -- Align parquet-geospatial crate docs with README (#10302) by @paleolimbot in [#10302](https://github.com/apache/arrow-rs/pull/10302) - -### Miscellaneous -- Fix(parquet): restore opaque return type for `RowSelection::iter` (#10450) by @haohuaijin in [#10450](https://github.com/apache/arrow-rs/pull/10450) -- Feat(arrow-ipc): add sans-IO stream encoder (#10277) by @Phoenix500526 in [#10277](https://github.com/apache/arrow-rs/pull/10277) -- Support suffix white space in arrow-cast parse (#10396) by @Rich-T-kid in [#10396](https://github.com/apache/arrow-rs/pull/10396) -- Refactor(parquet): split `arrow_reader/selection` into smaller modules (#10434) by @haohuaijin in [#10434](https://github.com/apache/arrow-rs/pull/10434) -- Chore: deduplicate filter nulls code in coalesce/filter kernel (#10348) by @Jefffrey in [#10348](https://github.com/apache/arrow-rs/pull/10348) -- Avro: bound VLQDecoder::long against overlong varints (#10407) by @STiFLeR7 in [#10407](https://github.com/apache/arrow-rs/pull/10407) -- Feat(coalesce): add size function (#10331) by @rluvaton in [#10331](https://github.com/apache/arrow-rs/pull/10331) -- Arrow-row: Fix decode_fixed_size_list to apply the corrected_type step for dictionary children (#10414) by @zhuqi-lucas in [#10414](https://github.com/apache/arrow-rs/pull/10414) -- [Variant] make `value` mandatory field for `VariantArray`/`ShreddingState` (#10318) by @sdf-jkl in [#10318](https://github.com/apache/arrow-rs/pull/10318) -- Fix off by one error for slice accounting (#10406) by @Rich-T-kid in [#10406](https://github.com/apache/arrow-rs/pull/10406) -- Fix: `GenericByteViewArray::gc()` drops inline views on the multi-buffer slow path (#10287) by @adriangb in [#10287](https://github.com/apache/arrow-rs/pull/10287) -- Fix(parquet): support mask filtering across skipped pages (#10288) by @hhhizzz in [#10288](https://github.com/apache/arrow-rs/pull/10288) -- Support white space prefixed parse for ints and floats (#10374) by @Rich-T-kid in [#10374](https://github.com/apache/arrow-rs/pull/10374) -- Fix(arrow-cast): make `b64_encode` reject invalid UTF-8 from misbehaving `Engine` impls (#10324) by @bit2swaz in [#10324](https://github.com/apache/arrow-rs/pull/10324) -- Make more of i256 available in const code (#10363) by @AdamGS in [#10363](https://github.com/apache/arrow-rs/pull/10363) -- Chore: remove parquet dependency from parquet_derive (#10327) by @ByteBaker in [#10327](https://github.com/apache/arrow-rs/pull/10327) -- Expose builder buffer capacity accessors (#10342) by @Weijun-H in [#10342](https://github.com/apache/arrow-rs/pull/10342) -- Add interval multiplication by i64 (#10336) by @peterxcli in [#10336](https://github.com/apache/arrow-rs/pull/10336) -- Make `parquet-index` work with column paths (#10330) by @korowa in [#10330](https://github.com/apache/arrow-rs/pull/10330) -- Fix: take FFI_ArrowArrayStream errno values from libc (#10299) by @fornwall in [#10299](https://github.com/apache/arrow-rs/pull/10299) -- Fix(arrow-data): allow full dictionary key range when concatenating (#10323) by @raphaelroshan in [#10323](https://github.com/apache/arrow-rs/pull/10323) -- Feat(arrow-csv): add support for parsing `Float16` (#10343) by @Glatzel in [#10343](https://github.com/apache/arrow-rs/pull/10343) -- Remove the unmaintained paste dependency from arrow (#10303) by @Phoenix500526 in [#10303](https://github.com/apache/arrow-rs/pull/10303) -- Don't panic on invalid c ffi schema name (#10328) by @robert3005 in [#10328](https://github.com/apache/arrow-rs/pull/10328) -- Chore: formalize the default map field names to match default arrow spec (#10297) by @rluvaton in [#10297](https://github.com/apache/arrow-rs/pull/10297) -- Fix(REE): check upfront if sorting empty array or 0 limit (#10293) by @Jefffrey in [#10293](https://github.com/apache/arrow-rs/pull/10293) -- [Variant] Add `variant_to_arrow` `Map` type support (#10307) by @sdf-jkl in [#10307](https://github.com/apache/arrow-rs/pull/10307) -- Fix(arrow-avro): bound untrusted OCF block size and item counts (#10237) by @miniex in [#10237](https://github.com/apache/arrow-rs/pull/10237) -- Fix(arrow-array): disallow creating `MapArray` with nullable key field (#10272) by @rluvaton in [#10272](https://github.com/apache/arrow-rs/pull/10272) -- Fix: don't panic on `ArrayData::try_new` on bad input even when `force_validate` feature is on (#10282) by @rluvaton in [#10282](https://github.com/apache/arrow-rs/pull/10282) - From 2c57928c7428743daa348fa878b153357de90dbe Mon Sep 17 00:00:00 2001 From: Jefffrey Date: Fri, 31 Jul 2026 13:04:45 +0900 Subject: [PATCH 03/10] Update release instructions, remove old changelog/label scripts --- dev/release/README.md | 49 +++++----- dev/release/label_issues.py | 153 ------------------------------- dev/release/update_change_log.sh | 76 --------------- 3 files changed, 21 insertions(+), 257 deletions(-) delete mode 100755 dev/release/label_issues.py delete mode 100755 dev/release/update_change_log.sh diff --git a/dev/release/README.md b/dev/release/README.md index 465fd82d4d47..eeadae14c667 100644 --- a/dev/release/README.md +++ b/dev/release/README.md @@ -45,56 +45,49 @@ crates.io, the Rust ecosystem's package manager. We create a `CHANGELOG.md` so our users know what has been changed between releases. -The CHANGELOG is created automatically using -[update_change_log.sh](https://github.com/apache/arrow-rs/blob/main/dev/release/update_change_log.sh) - -This script creates a changelog using github issues and the -labels associated with them. - ## Prepare CHANGELOG and version: +- Ensure [`git-cliff`](https://git-cliff.org/docs/installation/) is installed + Now prepare a PR to update `CHANGELOG.md` and versions on `main` to reflect the planned release. -Do this in the root of this repository. For example [#2323](https://github.com/apache/arrow-rs/pull/2323) +First copy the contents of `CHANGELOG.md` into `CHANGELOG-old.md`. + +Then do this in the root of this repository. For example [#2323](https://github.com/apache/arrow-rs/pull/2323) ```bash git checkout main git pull git checkout -b -# Update versions. Make sure to run it before the next step since we do not want CHANGELOG-old.md affected. +# Update versions. sed -i '' -e 's/14.0.0/39.0.0/g' `find . -name 'Cargo.toml' -or -name '*.md' | grep -v CHANGELOG.md | grep -v README.md` git commit -a -m 'Update version' -# ensure your github token is available -export ARROW_GITHUB_API_TOKEN= +# Assuming remote name is apache; if named differently ensure this is changed, +# since we need the tags from the GitHub repository +git fetch apache --tags -# manually edit ./dev/release/update_change_log.sh to reflect the release version -# create the changelog -./dev/release/update_change_log.sh -# commit the initial changes -git commit -a -m 'Create changelog' +# ensure your github token is available +export GITHUB_TOKEN= -# run automated script to copy labels to issues based on referenced PRs -# (NOTE 1: this must be done by a committer / other who has -# write access to the repository) -# -# NOTE 2: this must be done after creating the initial CHANGELOG file -python dev/release/label_issues.py +# e.g. TAG=60.0.0; this is just used to format the CHANGELOG, so tag doesn't +# need to exist yet, and don't put an RC tag either +# (we are excluding our above version bump commit from the changelog) +git-cliff --tag --unreleased --output CHANGELOG.md --skip-commit $(git rev-parse HEAD) -# review change log / edit issues and labels if needed, rerun, repeat as necessary -# note you need to revert changes to CHANGELOG-old.md if you want to rerun the script -./dev/release/update_change_log.sh +# review change log, adjust labels on PR's as required +# can rerun above git-cliff command if needed -# Commit the changes -git commit -a -m 'Update changelog' +# commit the changelog +git commit -a -m 'Create changelog' git push ``` Note that when reviewing the change log, rather than editing the -`CHANGELOG.md`, it is preferred to update the issues and their labels -(e.g. add `invalid` label to exclude them from release notes) +`CHANGELOG.md`, it is preferred to update the PRs and their labels +(e.g. add `development-process` label to exclude them from release notes) Merge this PR to `main` prior to the next step. diff --git a/dev/release/label_issues.py b/dev/release/label_issues.py deleted file mode 100755 index b004b7fa7f86..000000000000 --- a/dev/release/label_issues.py +++ /dev/null @@ -1,153 +0,0 @@ -#!/usr/bin/env python - -############################################################################## -# 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. -############################################################################## - -# Python script to add labels to github issues from the PRs that closed them -# -# Required setup: -# $ pip install PyGithub -# -# ARROW_GITHUB_API_TOKEN needs to be set to your github token -from github import Github -import os -import re - - - -# get all cross referenced issues from the named issue -# (aka linked PRs) -# issue = arrow_repo.get_issue(issue_number) -def get_cross_referenced_issues(issue): - all_issues = set() - for timeline_item in issue.get_timeline(): - if timeline_item.event == 'cross-referenced' and timeline_item.source.type == 'issue': - all_issues.add(timeline_item.source.issue) - - # convert to list - return [i for i in all_issues] - - -# labels not to transfer -BLACKLIST_LABELS = {'development-process', 'api-change'} - -# Adds labels to the specified issue with the labels from linked pull requests -def relabel_issue(arrow_repo, issue_number): - #print(issue_number, 'fetching issue') - issue = arrow_repo.get_issue(issue_number) - print('considering issue', issue.html_url) - linked_issues = get_cross_referenced_issues(issue) - #print(' ', 'cross referenced issues:', linked_issues) - - # Figure out what labels need to be added, if any - existing_labels = set() - for label in issue.labels: - existing_labels.add(label.name) - - # find all labels to add - for linked_issue in linked_issues: - if linked_issue.pull_request is None: - print(' ', 'not pull request, skipping', linked_issue.html_url) - continue - - if linked_issue.repository.name != 'arrow-rs': - print(' ', 'not in arrow-rs, skipping', linked_issue.html_url) - continue - - print(' ', 'finding labels for linked pr', linked_issue.html_url) - linked_labels = set() - for label in linked_issue.labels: - linked_labels.add(label.name) - #print(' ', 'existing labels:', existing_labels) - - labels_to_add = linked_labels.difference(existing_labels) - - # remove any blacklist labels, if any - for l in BLACKLIST_LABELS: - labels_to_add.discard(l) - - if len(labels_to_add) > 0: - print(' ', 'adding labels: ', labels_to_add, 'to', issue.number) - for label in labels_to_add: - issue.add_to_labels(label) - print(' ', 'added', label) - existing_labels.add(label) - - # leave a note about what updated these labels - issue.create_comment('`label_issue.py` automatically added labels {} from #{}'.format(labels_to_add, linked_issue.number)) - - -# what section headings in the CHANGELOG.md file contain closed issues that may need relabeling -ISSUE_SECTION_NAMES = ['Closed issues:', 'Fixed bugs:', 'Implemented enhancements:'] - -# find all possible issues / bugs by scraping CHANGELOG.md -# -# TODO: Find all tickets merged since this tag -# The compare api can find all commits since that tag -# I could not find a good way in the github API to find the PRs connected to a commit -#since_tag = '22.0.0' - -def find_issues_from_changelog(): - script_dir = os.path.dirname(os.path.realpath(__file__)) - path = os.path.join(script_dir, '..', '..', 'CHANGELOG.md') - - issues = set() - - # Flag that - in_issue_section = False - - with open(path, 'r') as f: - for line in f: - #print('line: ', line) - line = line.strip() - if line.startswith('**'): - section_name = line.replace('**', '') - if section_name in ISSUE_SECTION_NAMES: - #print(' ', 'is issue section', section_name) - in_issue_section = True - else: - #print(' ', 'is not issue section', section_name) - in_issue_section = False - - if in_issue_section: - match = re.search('#([\d]+)', line) - if match is not None: - #print(' ', 'reference', match.group(1)) - issues.add(match.group(1)) - - # Convert to list of number - return sorted([int(i) for i in issues]) - - -if __name__ == '__main__': - print('Attempting to label github issues from their corresponding PRs') - - issues = find_issues_from_changelog() - print('Issues found in CHANGELOG: ', issues) - - github_token = os.environ.get("ARROW_GITHUB_API_TOKEN") - - print('logging into GITHUB...') - github = Github(github_token) - - print('getting github repo...') - arrow_repo = github.get_repo('apache/arrow-rs') - - for issue in issues: - relabel_issue(arrow_repo, issue) diff --git a/dev/release/update_change_log.sh b/dev/release/update_change_log.sh deleted file mode 100755 index c4d6f0c11822..000000000000 --- a/dev/release/update_change_log.sh +++ /dev/null @@ -1,76 +0,0 @@ -#!/bin/bash -# -# 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. -# - -# invokes the changelog generator from -# https://github.com/github-changelog-generator/github-changelog-generator -# -# With the config located in -# arrow-rs/.github_changelog_generator -# -# Usage: -# ARROW_GITHUB_API_TOKEN= ./update_change_log.sh - -set -e - -SINCE_TAG="59.0.0" -FUTURE_RELEASE="59.1.0" - -SOURCE_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" -SOURCE_TOP_DIR="$(cd "${SOURCE_DIR}/../../" && pwd)" - -OUTPUT_PATH="${SOURCE_TOP_DIR}/CHANGELOG.md" - -# use exclude-tags-regex to filter out tags used for object_store -# crates and only only look at tags that DO NOT begin with `object_store_` -pushd "${SOURCE_TOP_DIR}" -docker run -it --rm -e CHANGELOG_GITHUB_TOKEN="$ARROW_GITHUB_API_TOKEN" -v "$(pwd)":/usr/local/src/your-app githubchangeloggenerator/github-changelog-generator \ - --user apache \ - --project arrow-rs \ - --cache-file=.githubchangeloggenerator.cache \ - --cache-log=.githubchangeloggenerator.cache.log \ - --http-cache \ - --max-issues=300 \ - --exclude-tags-regex "^object_store_\d+\.\d+\.\d+$|-rc\d$" \ - --since-tag ${SINCE_TAG} \ - --future-release ${FUTURE_RELEASE} - -sed -i.bak "s/\\\n/\n\n/" "${OUTPUT_PATH}" - -# Put license header back on -echo ' -' | cat - "${OUTPUT_PATH}" > "${OUTPUT_PATH}".tmp -mv "${OUTPUT_PATH}".tmp "${OUTPUT_PATH}" From 1c59b340d04ab7c55a75068912960f04d6472439 Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Fri, 31 Jul 2026 10:54:45 -0400 Subject: [PATCH 04/10] Make old changelog --- CHANGELOG-old.md | 139 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 139 insertions(+) diff --git a/CHANGELOG-old.md b/CHANGELOG-old.md index 7371b8512f17..6ef25a989f29 100644 --- a/CHANGELOG-old.md +++ b/CHANGELOG-old.md @@ -21,6 +21,145 @@ # Changelog +## [59.1.0](https://github.com/apache/arrow-rs/tree/59.1.0) (2026-07-03) + +[Full Changelog](https://github.com/apache/arrow-rs/compare/59.0.0...59.1.0) + +**Implemented enhancements:** + +- Fast path for nested `DictionaryArray` casting [\#10247](https://github.com/apache/arrow-rs/issues/10247) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] +- parquet/arrow: reading multiple nested columns fails with "Not all children array length are the same!" when a list continues across DataPageV2 page boundary [\#10243](https://github.com/apache/arrow-rs/issues/10243) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] +- Add product aggregate kernel to arrow-rs [\#10150](https://github.com/apache/arrow-rs/issues/10150) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] +- Stricter `DataType` parsing [\#10146](https://github.com/apache/arrow-rs/issues/10146) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] +- Support validating CSV headers against Schema [\#10143](https://github.com/apache/arrow-rs/issues/10143) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] +- arrow-ipc: Supports compression level configuration for arrow-ipc writer [\#10132](https://github.com/apache/arrow-rs/issues/10132) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] +- \[Variant\] `VariantArray` field API naming [\#10093](https://github.com/apache/arrow-rs/issues/10093) +- Add `StructArray::field_` APIs symmetric to `StructArray::column_` ones [\#10092](https://github.com/apache/arrow-rs/issues/10092) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] +- arrow-buffer: implement Saturating, CheckedShl, Not num-traits for i256 [\#10087](https://github.com/apache/arrow-rs/issues/10087) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] +- feat: native concat for `MapArray` [\#10047](https://github.com/apache/arrow-rs/issues/10047) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] +- \[Variant\] Add `variant_to_arrow` `Dictionary/REE` type support [\#10013](https://github.com/apache/arrow-rs/issues/10013) + +**Fixed bugs:** + +- arrow-row on fixed size binary/list with size 0 and no nulls return wrong length [\#10270](https://github.com/apache/arrow-rs/issues/10270) +- casting list to 0-size fixedsizelist can cause incorrect output length [\#10227](https://github.com/apache/arrow-rs/issues/10227) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] +- Buffer count mismatched with metadata when encoding records with dictionary of dictionaries [\#10213](https://github.com/apache/arrow-rs/issues/10213) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] +- `Buffer::into_mutable` is not consistent regarding sliced data and can lead to panics [\#10117](https://github.com/apache/arrow-rs/issues/10117) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] +- parquet\_derive: cannot read or write columns whose name is a Rust keyword \(raw identifiers like r\#type become column "r\#type"\) [\#10112](https://github.com/apache/arrow-rs/issues/10112) +- parquet: fix OffsetBuffer panic on corrupt input [\#10107](https://github.com/apache/arrow-rs/issues/10107) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] +- Parquet geospatial conversion uses metadata key "algorithm" instead of "edges" in geoarrow metadata [\#9929](https://github.com/apache/arrow-rs/issues/9929) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] + +**Documentation updates:** + +- doc: More comments to `concat_batches` [\#10178](https://github.com/apache/arrow-rs/pull/10178) ([2010YOUY01](https://github.com/2010YOUY01)) +- Minor: improve PageStore docs with a temp-file spilling example [\#10074](https://github.com/apache/arrow-rs/pull/10074) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([alamb](https://github.com/alamb)) + +**Performance improvements:** + +- perf: interleave\_list for List\ could be optimized? [\#10022](https://github.com/apache/arrow-rs/issues/10022) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] +- perf\(arrow-ord\): Avoid full index materialization for small-limit lexsorts [\#9990](https://github.com/apache/arrow-rs/issues/9990) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] +- Replace conversion of binary-\>string in arrow-row from arraydata to direct construction [\#10261](https://github.com/apache/arrow-rs/pull/10261) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) +- \[arrow-flight encode path\]re-use flatbufferbuilder [\#10220](https://github.com/apache/arrow-rs/pull/10220) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Rich-T-kid](https://github.com/Rich-T-kid)) +- \[10125\] arrow-flight decode path optimizations \(add `skip_validation` to arrow-flight\) [\#10206](https://github.com/apache/arrow-rs/pull/10206) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] [[arrow-flight](https://github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://github.com/Rich-T-kid)) +- Improve performance of `concat_elements` ByteViewArray concatenation [\#10161](https://github.com/apache/arrow-rs/pull/10161) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([pepijnve](https://github.com/pepijnve)) +- \[arrow-flight\] Optimize flight, remove some allocations, add dictionary focused benchmarks [\#10126](https://github.com/apache/arrow-rs/pull/10126) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] [[arrow-flight](https://github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://github.com/Rich-T-kid)) +- optimize\(concat\): concat map implementation [\#10048](https://github.com/apache/arrow-rs/pull/10048) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([mapleFU](https://github.com/mapleFU)) +- Reduce copies in Arrow IPC writer [\#10044](https://github.com/apache/arrow-rs/pull/10044) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Rich-T-kid](https://github.com/Rich-T-kid)) +- perf\(interleave\): Optimize list interleave\_list when child is primitive [\#10025](https://github.com/apache/arrow-rs/pull/10025) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([mapleFU](https://github.com/mapleFU)) + +**Closed issues:** + +- Soundness: Unsound alignment contract in public `FromBytes` trait and `BitReader::get_batch` [\#10164](https://github.com/apache/arrow-rs/issues/10164) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] +- ParquetPushDecoder: expose the next row-group index that try\_next\_reader will yield [\#10148](https://github.com/apache/arrow-rs/issues/10148) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] +- arrow-ipc: Extend writer benchmarks to include dictionaries [\#10119](https://github.com/apache/arrow-rs/issues/10119) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] +- bench\(parquet\): benchmark for nested list write [\#10083](https://github.com/apache/arrow-rs/issues/10083) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] +- Support i256 implement From\ [\#10080](https://github.com/apache/arrow-rs/issues/10080) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] + +**Merged pull requests:** + +- fix\(arrow-row\): allow to convert non empty fixed size binary/list array with size length 0 and no nulls [\#10271](https://github.com/apache/arrow-rs/pull/10271) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://github.com/rluvaton)) +- chore: Fix audit CI run by ignore quick-xml audit advisories [\#10267](https://github.com/apache/arrow-rs/pull/10267) ([alamb](https://github.com/alamb)) +- fix main: parquet test compilation failure [\#10266](https://github.com/apache/arrow-rs/pull/10266) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([Jefffrey](https://github.com/Jefffrey)) +- minor: drive-by refactors for dicts in substring & filter [\#10264](https://github.com/apache/arrow-rs/pull/10264) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) +- Add validated row decode benchmark [\#10259](https://github.com/apache/arrow-rs/pull/10259) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://github.com/alamb)) +- arrow-cast: Add optimized path for unnesting a dict [\#10248](https://github.com/apache/arrow-rs/pull/10248) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([brancz](https://github.com/brancz)) +- feat: support uuid from fixed type of length 16 [\#10241](https://github.com/apache/arrow-rs/pull/10241) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([ariel-miculas](https://github.com/ariel-miculas)) +- chore\(deps\): bump actions/cache from 6.0.0 to 6.1.0 [\#10240](https://github.com/apache/arrow-rs/pull/10240) ([dependabot[bot]](https://github.com/apps/dependabot)) +- fix: Rename parquet feature flag 'flate2-rust\_backened' to 'flate2-rust\_backend' [\#10239](https://github.com/apache/arrow-rs/pull/10239) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([dannycjones](https://github.com/dannycjones)) +- chore: Make clippy::question\_mark happy [\#10231](https://github.com/apache/arrow-rs/pull/10231) ([Tpt](https://github.com/Tpt)) +- fix\(ipc\): reject dictionary-encoded dictionary values [\#10230](https://github.com/apache/arrow-rs/pull/10230) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([goutamadwant](https://github.com/goutamadwant)) +- Replace `ArrayData` with direct `Array` construction in `arrow-row` [\#10229](https://github.com/apache/arrow-rs/pull/10229) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) +- fix: casting list to fixedsizelist didn't respect input length [\#10228](https://github.com/apache/arrow-rs/pull/10228) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) +- chore: Fix clippy::byte\_char\_slices \(use byte strings instead of explicit arrays\) [\#10225](https://github.com/apache/arrow-rs/pull/10225) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Tpt](https://github.com/Tpt)) +- nit: arrow-pyarrow: Use string interning [\#10224](https://github.com/apache/arrow-rs/pull/10224) ([Tpt](https://github.com/Tpt)) +- Support concatenation of mixed FixedSizeBinary via `concat_elements_dyn` [\#10222](https://github.com/apache/arrow-rs/pull/10222) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([pepijnve](https://github.com/pepijnve)) +- rename Compression struct [\#10221](https://github.com/apache/arrow-rs/pull/10221) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] [[arrow-flight](https://github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://github.com/Rich-T-kid)) +- chore\(deps\): bump the all-other-cargo-deps group across 1 directory with 16 updates [\#10218](https://github.com/apache/arrow-rs/pull/10218) ([dependabot[bot]](https://github.com/apps/dependabot)) +- chore\(deps\): bump actions/setup-python from 6.2.0 to 6.3.0 [\#10210](https://github.com/apache/arrow-rs/pull/10210) ([dependabot[bot]](https://github.com/apps/dependabot)) +- \[10125\] Introduce mult-batch decode benchmarks [\#10207](https://github.com/apache/arrow-rs/pull/10207) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] [[arrow-flight](https://github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://github.com/Rich-T-kid)) +- chore\(deps\): bump actions/cache from 5.0.5 to 6.0.0 [\#10203](https://github.com/apache/arrow-rs/pull/10203) ([dependabot[bot]](https://github.com/apps/dependabot)) +- introduce decode benchmarks [\#10202](https://github.com/apache/arrow-rs/pull/10202) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] [[arrow-flight](https://github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://github.com/Rich-T-kid)) +- Fix `merge_kernels` benchmark panic due to not wrapping with `Scalar` [\#10199](https://github.com/apache/arrow-rs/pull/10199) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) +- Benchmarks and performance improvement for parquet boolean reader [\#10196](https://github.com/apache/arrow-rs/pull/10196) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([jhorstmann](https://github.com/jhorstmann)) +- add stale PR workflow [\#10194](https://github.com/apache/arrow-rs/pull/10194) ([Jefffrey](https://github.com/Jefffrey)) +- chore: group minor/patch dependabot updates [\#10193](https://github.com/apache/arrow-rs/pull/10193) ([Jefffrey](https://github.com/Jefffrey)) +- chore\(deps\): bump http from 1.4.0 to 1.4.2 [\#10191](https://github.com/apache/arrow-rs/pull/10191) ([dependabot[bot]](https://github.com/apps/dependabot)) +- chore\(deps\): bump syn from 2.0.117 to 2.0.118 [\#10190](https://github.com/apache/arrow-rs/pull/10190) ([dependabot[bot]](https://github.com/apps/dependabot)) +- chore\(deps\): bump chrono from 0.4.44 to 0.4.45 [\#10188](https://github.com/apache/arrow-rs/pull/10188) ([dependabot[bot]](https://github.com/apps/dependabot)) +- chore\(deps\): bump uuid from 1.23.1 to 1.23.3 [\#10186](https://github.com/apache/arrow-rs/pull/10186) ([dependabot[bot]](https://github.com/apps/dependabot)) +- chore: run `cargo update` to bump quinn [\#10181](https://github.com/apache/arrow-rs/pull/10181) ([Jefffrey](https://github.com/Jefffrey)) +- test: cover signed integers and bool in BitReader::get\_batch test [\#10180](https://github.com/apache/arrow-rs/pull/10180) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([alamb](https://github.com/alamb)) +- \[arrow-select\] perf: Replace `ArrayData` with direct `Array` construction in take kernels [\#10176](https://github.com/apache/arrow-rs/pull/10176) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([liamzwbao](https://github.com/liamzwbao)) +- Return PyValueError for nullable PyArrow struct imports [\#10174](https://github.com/apache/arrow-rs/pull/10174) ([fallintoplace](https://github.com/fallintoplace)) +- Fix Variant time microsecond JSON formatting [\#10173](https://github.com/apache/arrow-rs/pull/10173) ([fallintoplace](https://github.com/fallintoplace)) +- Split traits for plain and bitpacked decoding and fix soundness issue in BitReader::get\_batch [\#10172](https://github.com/apache/arrow-rs/pull/10172) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([jhorstmann](https://github.com/jhorstmann)) +- fix: switch generic usages of `i128` to `IntervalMonthDayNano` for MonthDayNano type [\#10171](https://github.com/apache/arrow-rs/pull/10171) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) +- chore: specify `--locked` when cargo installing `cargo-audit` [\#10170](https://github.com/apache/arrow-rs/pull/10170) ([Jefffrey](https://github.com/Jefffrey)) +- chore: Fix clippy::useless\_borrows\_in\_formatting [\#10163](https://github.com/apache/arrow-rs/pull/10163) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Tpt](https://github.com/Tpt)) +- fix\(arrow-cast\): respect cast safety for overflowing temporal casts [\#10162](https://github.com/apache/arrow-rs/pull/10162) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([SAY-5](https://github.com/SAY-5)) +- chore\(deps\): bump actions/checkout from 6 to 7 [\#10159](https://github.com/apache/arrow-rs/pull/10159) ([dependabot[bot]](https://github.com/apps/dependabot)) +- feat\(parquet\): add ParquetPushDecoder::peek\_next\_row\_group\(\) [\#10158](https://github.com/apache/arrow-rs/pull/10158) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([zhuqi-lucas](https://github.com/zhuqi-lucas)) +- feat\(pyarrow\) `FromPyArrow` on `Vec`: allow any iterable for input [\#10155](https://github.com/apache/arrow-rs/pull/10155) ([Tpt](https://github.com/Tpt)) +- nit: pyarrow: simplify class validation error creation [\#10154](https://github.com/apache/arrow-rs/pull/10154) ([Tpt](https://github.com/Tpt)) +- \[Variant\] add doc reference to `VariantArrayBuilder` [\#10152](https://github.com/apache/arrow-rs/pull/10152) ([sdf-jkl](https://github.com/sdf-jkl)) +- feat: Adds product aggregate compute kernel [\#10151](https://github.com/apache/arrow-rs/pull/10151) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([devanbenz](https://github.com/devanbenz)) +- Stricter datatype parsing for decimals, fixedsizelists and time32/64 [\#10147](https://github.com/apache/arrow-rs/pull/10147) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) +- feat\(arrow\_csv\): add header validation option [\#10144](https://github.com/apache/arrow-rs/pull/10144) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([XiNiHa](https://github.com/XiNiHa)) +- \[Parquet\] route dictionary page through the PageStore [\#10142](https://github.com/apache/arrow-rs/pull/10142) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([liamzwbao](https://github.com/liamzwbao)) +- chore: update pyo3 dependency to 0.29 [\#10134](https://github.com/apache/arrow-rs/pull/10134) ([timsaucer](https://github.com/timsaucer)) +- feat\(ipc\): Supports compression level configuration [\#10133](https://github.com/apache/arrow-rs/pull/10133) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([wForget](https://github.com/wForget)) +- fix: write error for dbg output of out of range timestamps [\#10130](https://github.com/apache/arrow-rs/pull/10130) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) +- \[Variant\] `VariantArray` field API naming [\#10124](https://github.com/apache/arrow-rs/pull/10124) ([sdf-jkl](https://github.com/sdf-jkl)) +- feat\(arrow\_array\): add helper function to create MapArray from `Vec)>>>` for tests [\#10123](https://github.com/apache/arrow-rs/pull/10123) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] [[arrow-flight](https://github.com/apache/arrow-rs/labels/arrow-flight)] ([rluvaton](https://github.com/rluvaton)) +- perf\(arrow-ipc\): Add writer benchmarks for dictionaries [\#10122](https://github.com/apache/arrow-rs/pull/10122) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([JakeDern](https://github.com/JakeDern)) +- feat: support `MapArray` in lengths kernel [\#10121](https://github.com/apache/arrow-rs/pull/10121) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://github.com/rluvaton)) +- feat: add `OffsetBuffer::subtract` to allow to shift offsets by value [\#10120](https://github.com/apache/arrow-rs/pull/10120) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://github.com/rluvaton)) +- fix: `Buffer::into_mutable` return error instead of panic for converting owned sliced when not start at 0 and fix returned Mutable length [\#10118](https://github.com/apache/arrow-rs/pull/10118) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://github.com/rluvaton)) +- chore: update `Bytes` visibility to correctly reflect the actual visibility [\#10115](https://github.com/apache/arrow-rs/pull/10115) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://github.com/rluvaton)) +- fix\(parquet\_derive\): support raw identifiers as column names [\#10113](https://github.com/apache/arrow-rs/pull/10113) ([cbmixx](https://github.com/cbmixx)) +- removed clippy ignore statment [\#10111](https://github.com/apache/arrow-rs/pull/10111) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Rich-T-kid](https://github.com/Rich-T-kid)) +- Add `StructArray::field_` APIs symmetric to `StructArray::column_` ones [\#10110](https://github.com/apache/arrow-rs/pull/10110) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([sdf-jkl](https://github.com/sdf-jkl)) +- fix\(parquet\): return error instead of panicking in pad\_nulls on corrupt input [\#10108](https://github.com/apache/arrow-rs/pull/10108) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([thepenguinco](https://github.com/thepenguinco)) +- Minor: Add interleave tests for List\ and List\ [\#10099](https://github.com/apache/arrow-rs/pull/10099) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://github.com/alamb)) +- Add arrow-flight test coverage for IPC compression [\#10097](https://github.com/apache/arrow-rs/pull/10097) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] [[arrow-flight](https://github.com/apache/arrow-rs/labels/arrow-flight)] ([alamb](https://github.com/alamb)) +- chore\(deps\): bump pyspark from 3.3.2 to 3.4.4 in /parquet/pytest [\#10091](https://github.com/apache/arrow-rs/pull/10091) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([dependabot[bot]](https://github.com/apps/dependabot)) +- refactor\(parquet\): bundle array reader recursion args into `ReaderArgs` [\#10089](https://github.com/apache/arrow-rs/pull/10089) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([HippoBaro](https://github.com/HippoBaro)) +- arrow-buffer: implement Saturating, Checked num-traits for i256 [\#10088](https://github.com/apache/arrow-rs/pull/10088) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([theirix](https://github.com/theirix)) +- bench\(parquet\): add nested list writer benchmarks [\#10084](https://github.com/apache/arrow-rs/pull/10084) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([mapleFU](https://github.com/mapleFU)) +- Implement From\ for i256 [\#10081](https://github.com/apache/arrow-rs/pull/10081) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([AdamGS](https://github.com/AdamGS)) +- test\(parquet\): drop confusing `main` reference in page-roundtrip test comment [\#10072](https://github.com/apache/arrow-rs/pull/10072) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([adriangb](https://github.com/adriangb)) +- ci: Split miri tests into 4 parallel shards [\#10067](https://github.com/apache/arrow-rs/pull/10067) ([AdamGS](https://github.com/AdamGS)) +- Add tests and fix corner cases for Parquet/GeoArrow extension type conversion [\#10065](https://github.com/apache/arrow-rs/pull/10065) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([paleolimbot](https://github.com/paleolimbot)) +- Support writing REE arrays directly to Parquet [\#10064](https://github.com/apache/arrow-rs/pull/10064) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([Rich-T-kid](https://github.com/Rich-T-kid)) +- test\(arrow-select\): additional tests for inline-view filter fast path \(tests for \#9755\) [\#10054](https://github.com/apache/arrow-rs/pull/10054) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://github.com/alamb)) +- test\(arrow-select\): add take\_bytes coverage for sliced values and nullable offset overflow [\#10053](https://github.com/apache/arrow-rs/pull/10053) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://github.com/alamb)) +- Consolidate `filter_null_mask` into `FilterPredicate::filter_nulls` [\#10049](https://github.com/apache/arrow-rs/pull/10049) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://github.com/alamb)) +- \[Variant\] Add `VariantBuilder` values check [\#10016](https://github.com/apache/arrow-rs/pull/10016) ([sdf-jkl](https://github.com/sdf-jkl)) +- \[Variant\] Preserve `UUID` extension type metadata for Parquet writer [\#10015](https://github.com/apache/arrow-rs/pull/10015) ([sdf-jkl](https://github.com/sdf-jkl)) +- feat\(parquet-variant\): add Dictionary and REE variant\_to\_arrow support [\#10014](https://github.com/apache/arrow-rs/pull/10014) ([mneetika](https://github.com/mneetika)) +- perf\(arrow-ord\): Avoid full index materialization for small-limit lexsorts [\#9991](https://github.com/apache/arrow-rs/pull/9991) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([pchintar](https://github.com/pchintar)) + + ## [59.0.0](https://github.com/apache/arrow-rs/tree/59.0.0) (2026-06-04) [Full Changelog](https://github.com/apache/arrow-rs/compare/58.3.0...59.0.0) From 1860f3dccacc66e2db021b16160fc18d809b0b56 Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Fri, 31 Jul 2026 10:58:00 -0400 Subject: [PATCH 05/10] Update version to 59.2.0 --- Cargo.lock | 52 ++++++++++++++++++++++++++-------------------------- Cargo.toml | 42 +++++++++++++++++++++--------------------- 2 files changed, 47 insertions(+), 47 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index b53a7736fd27..5c3425d332f2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -170,7 +170,7 @@ dependencies = [ [[package]] name = "arrow" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow-arith", "arrow-array", @@ -197,7 +197,7 @@ dependencies = [ [[package]] name = "arrow-arith" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow-array", "arrow-buffer", @@ -210,7 +210,7 @@ dependencies = [ [[package]] name = "arrow-array" -version = "59.1.0" +version = "59.2.0" dependencies = [ "ahash", "arrow-buffer", @@ -231,7 +231,7 @@ dependencies = [ [[package]] name = "arrow-avro" -version = "59.1.0" +version = "59.2.0" dependencies = [ "apache-avro", "arrow", @@ -268,7 +268,7 @@ dependencies = [ [[package]] name = "arrow-buffer" -version = "59.1.0" +version = "59.2.0" dependencies = [ "bytes", "criterion", @@ -280,7 +280,7 @@ dependencies = [ [[package]] name = "arrow-cast" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow-array", "arrow-buffer", @@ -303,7 +303,7 @@ dependencies = [ [[package]] name = "arrow-csv" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow-array", "arrow-buffer", @@ -322,7 +322,7 @@ dependencies = [ [[package]] name = "arrow-data" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow-buffer", "arrow-schema", @@ -333,7 +333,7 @@ dependencies = [ [[package]] name = "arrow-flight" -version = "59.1.0" +version = "59.2.0" dependencies = [ "anyhow", "arrow-arith", @@ -373,7 +373,7 @@ dependencies = [ [[package]] name = "arrow-integration-test" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow", "arrow-buffer", @@ -386,7 +386,7 @@ dependencies = [ [[package]] name = "arrow-integration-testing" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow", "arrow-buffer", @@ -406,7 +406,7 @@ dependencies = [ [[package]] name = "arrow-ipc" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow-array", "arrow-buffer", @@ -425,7 +425,7 @@ dependencies = [ [[package]] name = "arrow-json" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arbitrary", "arrow-array", @@ -456,7 +456,7 @@ dependencies = [ [[package]] name = "arrow-ord" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow-array", "arrow-buffer", @@ -469,7 +469,7 @@ dependencies = [ [[package]] name = "arrow-pyarrow" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow-array", "arrow-data", @@ -479,7 +479,7 @@ dependencies = [ [[package]] name = "arrow-row" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow-array", "arrow-buffer", @@ -494,7 +494,7 @@ dependencies = [ [[package]] name = "arrow-schema" -version = "59.1.0" +version = "59.2.0" dependencies = [ "bitflags", "criterion", @@ -507,7 +507,7 @@ dependencies = [ [[package]] name = "arrow-select" -version = "59.1.0" +version = "59.2.0" dependencies = [ "ahash", "arrow-array", @@ -520,7 +520,7 @@ dependencies = [ [[package]] name = "arrow-string" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow-array", "arrow-buffer", @@ -2333,7 +2333,7 @@ dependencies = [ [[package]] name = "parquet" -version = "59.1.0" +version = "59.2.0" dependencies = [ "ahash", "arrow", @@ -2382,7 +2382,7 @@ dependencies = [ [[package]] name = "parquet-geospatial" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow-schema", "geo-traits", @@ -2394,7 +2394,7 @@ dependencies = [ [[package]] name = "parquet-variant" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow", "arrow-schema", @@ -2410,7 +2410,7 @@ dependencies = [ [[package]] name = "parquet-variant-compute" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow", "arrow-schema", @@ -2427,7 +2427,7 @@ dependencies = [ [[package]] name = "parquet-variant-json" -version = "59.1.0" +version = "59.2.0" dependencies = [ "arrow-schema", "base64 0.23.0", @@ -2439,7 +2439,7 @@ dependencies = [ [[package]] name = "parquet_derive" -version = "59.1.0" +version = "59.2.0" dependencies = [ "parquet", "proc-macro2", @@ -2449,7 +2449,7 @@ dependencies = [ [[package]] name = "parquet_derive_test" -version = "59.1.0" +version = "59.2.0" dependencies = [ "chrono", "parquet", diff --git a/Cargo.toml b/Cargo.toml index 4e2048c26f0a..4274307c697b 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -68,7 +68,7 @@ exclude = [ ] [workspace.package] -version = "59.1.0" +version = "59.2.0" homepage = "https://github.com/apache/arrow-rs" repository = "https://github.com/apache/arrow-rs" authors = ["Apache Arrow "] @@ -85,26 +85,26 @@ edition = "2024" rust-version = "1.85" [workspace.dependencies] -arrow = { version = "59.1.0", path = "./arrow", default-features = false } -arrow-arith = { version = "59.1.0", path = "./arrow-arith" } -arrow-array = { version = "59.1.0", path = "./arrow-array" } -arrow-buffer = { version = "59.1.0", path = "./arrow-buffer" } -arrow-cast = { version = "59.1.0", path = "./arrow-cast" } -arrow-csv = { version = "59.1.0", path = "./arrow-csv" } -arrow-data = { version = "59.1.0", path = "./arrow-data" } -arrow-ipc = { version = "59.1.0", path = "./arrow-ipc" } -arrow-json = { version = "59.1.0", path = "./arrow-json" } -arrow-ord = { version = "59.1.0", path = "./arrow-ord" } -arrow-pyarrow = { version = "59.1.0", path = "./arrow-pyarrow" } -arrow-row = { version = "59.1.0", path = "./arrow-row" } -arrow-schema = { version = "59.1.0", path = "./arrow-schema" } -arrow-select = { version = "59.1.0", path = "./arrow-select" } -arrow-string = { version = "59.1.0", path = "./arrow-string" } -parquet = { version = "59.1.0", path = "./parquet", default-features = false } -parquet-geospatial = { version = "59.1.0", path = "./parquet-geospatial" } -parquet-variant = { version = "59.1.0", path = "./parquet-variant" } -parquet-variant-json = { version = "59.1.0", path = "./parquet-variant-json" } -parquet-variant-compute = { version = "59.1.0", path = "./parquet-variant-compute" } +arrow = { version = "59.2.0", path = "./arrow", default-features = false } +arrow-arith = { version = "59.2.0", path = "./arrow-arith" } +arrow-array = { version = "59.2.0", path = "./arrow-array" } +arrow-buffer = { version = "59.2.0", path = "./arrow-buffer" } +arrow-cast = { version = "59.2.0", path = "./arrow-cast" } +arrow-csv = { version = "59.2.0", path = "./arrow-csv" } +arrow-data = { version = "59.2.0", path = "./arrow-data" } +arrow-ipc = { version = "59.2.0", path = "./arrow-ipc" } +arrow-json = { version = "59.2.0", path = "./arrow-json" } +arrow-ord = { version = "59.2.0", path = "./arrow-ord" } +arrow-pyarrow = { version = "59.2.0", path = "./arrow-pyarrow" } +arrow-row = { version = "59.2.0", path = "./arrow-row" } +arrow-schema = { version = "59.2.0", path = "./arrow-schema" } +arrow-select = { version = "59.2.0", path = "./arrow-select" } +arrow-string = { version = "59.2.0", path = "./arrow-string" } +parquet = { version = "59.2.0", path = "./parquet", default-features = false } +parquet-geospatial = { version = "59.2.0", path = "./parquet-geospatial" } +parquet-variant = { version = "59.2.0", path = "./parquet-variant" } +parquet-variant-json = { version = "59.2.0", path = "./parquet-variant-json" } +parquet-variant-compute = { version = "59.2.0", path = "./parquet-variant-compute" } chrono = { version = "0.4.40", default-features = false, features = ["clock"] } From 1359cb97f570c3052bf4b4731a66f91571e6b69f Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Fri, 31 Jul 2026 11:01:55 -0400 Subject: [PATCH 06/10] Update Changelog --- CHANGELOG.md | 207 ++++++++++++++---------------------------- dev/release/README.md | 3 +- 2 files changed, 70 insertions(+), 140 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 08dd44d9b0a4..87ea1a1d7d4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -19,144 +19,73 @@ # Changelog -## [59.1.0](https://github.com/apache/arrow-rs/tree/59.1.0) (2026-07-03) -[Full Changelog](https://github.com/apache/arrow-rs/compare/59.0.0...59.1.0) +## [59.2.0](https://github.com/apache/arrow-rs/tree/59.2.0) - (2026-07-31) + +[Full Changelog](https://github.com/apache/arrow-rs/compare/59.1.0...59.2.0) + +### Enhancements +- Chore: add unchecked array builder methods (#10440) by @Rich-T-kid in [#10440](https://github.com/apache/arrow-rs/pull/10440) +- Feat(arrow-ipc): add sans-IO stream encoder (#10277) by @Phoenix500526 in [#10277](https://github.com/apache/arrow-rs/pull/10277) +- Support suffix white space in arrow-cast parse (#10396) by @Rich-T-kid in [#10396](https://github.com/apache/arrow-rs/pull/10396) +- Feat(coalesce): add size function (#10331) by @rluvaton in [#10331](https://github.com/apache/arrow-rs/pull/10331) +- Fix(parquet): support mask filtering across skipped pages (#10288) by @hhhizzz in [#10288](https://github.com/apache/arrow-rs/pull/10288) +- Support white space prefixed parse for ints and floats (#10374) by @Rich-T-kid in [#10374](https://github.com/apache/arrow-rs/pull/10374) +- Make more of i256 available in const code (#10363) by @AdamGS in [#10363](https://github.com/apache/arrow-rs/pull/10363) +- Expose builder buffer capacity accessors (#10342) by @Weijun-H in [#10342](https://github.com/apache/arrow-rs/pull/10342) +- Add interval multiplication by i64 (#10336) by @peterxcli in [#10336](https://github.com/apache/arrow-rs/pull/10336) +- Make `parquet-index` work with column paths (#10330) by @korowa in [#10330](https://github.com/apache/arrow-rs/pull/10330) +- Feat(arrow-csv): add support for parsing `Float16` (#10343) by @Glatzel in [#10343](https://github.com/apache/arrow-rs/pull/10343) +- [Variant] Add `variant_to_arrow` `Map` type support (#10307) by @sdf-jkl in [#10307](https://github.com/apache/arrow-rs/pull/10307) + +### Bug fixes +- Fix(arrow-json): validate ListView child nullability (#10486) by @dk3yyyy in [#10486](https://github.com/apache/arrow-rs/pull/10486) +- Fix(arrow-json): validate map value nullability (#10475) by @subotac in [#10475](https://github.com/apache/arrow-rs/pull/10475) +- Avro: bound VLQDecoder::long against overlong varints (#10407) by @STiFLeR7 in [#10407](https://github.com/apache/arrow-rs/pull/10407) +- Arrow-row: Fix decode_fixed_size_list to apply the corrected_type step for dictionary children (#10414) by @zhuqi-lucas in [#10414](https://github.com/apache/arrow-rs/pull/10414) +- [Variant] make `value` mandatory field for `VariantArray`/`ShreddingState` (#10318) by @sdf-jkl in [#10318](https://github.com/apache/arrow-rs/pull/10318) +- Fix off by one error for slice accounting (#10406) by @Rich-T-kid in [#10406](https://github.com/apache/arrow-rs/pull/10406) +- Fix: `GenericByteViewArray::gc()` drops inline views on the multi-buffer slow path (#10287) by @adriangb in [#10287](https://github.com/apache/arrow-rs/pull/10287) +- Fix(arrow-json): render coerced f32 as its value in the string decoder (#10386) by @hareshkh in [#10386](https://github.com/apache/arrow-rs/pull/10386) +- Fix(arrow-cast): make `b64_encode` reject invalid UTF-8 from misbehaving `Engine` impls (#10324) by @bit2swaz in [#10324](https://github.com/apache/arrow-rs/pull/10324) +- Fix: take FFI_ArrowArrayStream errno values from libc (#10299) by @fornwall in [#10299](https://github.com/apache/arrow-rs/pull/10299) +- Fix(arrow-data): allow full dictionary key range when concatenating (#10323) by @raphaelroshan in [#10323](https://github.com/apache/arrow-rs/pull/10323) +- Don't panic on invalid c ffi schema name (#10328) by @robert3005 in [#10328](https://github.com/apache/arrow-rs/pull/10328) +- Fix(REE): check upfront if sorting empty array or 0 limit (#10293) by @Jefffrey in [#10293](https://github.com/apache/arrow-rs/pull/10293) +- Fix(arrow-avro): bound untrusted OCF block size and item counts (#10237) by @miniex in [#10237](https://github.com/apache/arrow-rs/pull/10237) +- Fix(arrow-array): disallow creating `MapArray` with nullable key field (#10272) by @rluvaton in [#10272](https://github.com/apache/arrow-rs/pull/10272) +- Fix: don't panic on `ArrayData::try_new` on bad input even when `force_validate` feature is on (#10282) by @rluvaton in [#10282](https://github.com/apache/arrow-rs/pull/10282) + +### Performance improvements +- Perf(parquet): slice up contiguous buffer for decimals and fsb (#10364) by @MassivePizza in [#10364](https://github.com/apache/arrow-rs/pull/10364) +- Feat(parquet): `RowSelection` can be backed by a `BooleanBuffer` (#10141) by @haohuaijin in [#10141](https://github.com/apache/arrow-rs/pull/10141) +- Perf(parquet): use Cursor in ZSTDCodec to avoid Vec alloc and copy (#10345) by @MassivePizza in [#10345](https://github.com/apache/arrow-rs/pull/10345) +- Optimize(parquet): Nested list batching child.write calls (#10085) by @mapleFU in [#10085](https://github.com/apache/arrow-rs/pull/10085) +- Perf(parquet): splice buffered pages with `write_all` instead of `io::copy` (adapts #10052) (#10353) by @adriangb in [#10353](https://github.com/apache/arrow-rs/pull/10353) +- Hoist calls for null_sentinel (#10356) by @Rich-T-kid in [#10356](https://github.com/apache/arrow-rs/pull/10356) +- Perf: speed up substring_by_char with an ASCII fast path and single-pass bounds (#10334) by @andygrove in [#10334](https://github.com/apache/arrow-rs/pull/10334) +- Cache encoded field name in FieldEncoder (#10296) by @MassivePizza in [#10296](https://github.com/apache/arrow-rs/pull/10296) +- Perf: allow users to skip utf8 validation (#10319) by @Rich-T-kid in [#10319](https://github.com/apache/arrow-rs/pull/10319) +- Perf: Improve decimal addition and subtraction when scale is equal (#10333) by @AdamGS in [#10333](https://github.com/apache/arrow-rs/pull/10333) +- Optimize(interleave): implement interleave for FixedSizeList/Map type (#10046) by @mapleFU in [#10046](https://github.com/apache/arrow-rs/pull/10046) +- Perf: Pre-size buffer allocations to avoid intermediate allocations (#10262) by @Rich-T-kid in [#10262](https://github.com/apache/arrow-rs/pull/10262) +- Perf: create dictionary reader config and default unsafeflag to false (#10260) by @Rich-T-kid in [#10260](https://github.com/apache/arrow-rs/pull/10260) +- Perf: Introduce zero copy path when tonic returns an aligned buffer (#10273) by @Rich-T-kid in [#10273](https://github.com/apache/arrow-rs/pull/10273) +- Validate short view strings in separate buffer in arrow-row (#10250) by @Jefffrey in [#10250](https://github.com/apache/arrow-rs/pull/10250) + +### Documentation updates +- Docs: clarify decimal negative scale behavior (#10304) by @ByteBaker in [#10304](https://github.com/apache/arrow-rs/pull/10304) +- Docs: fix mutableArrayData comments (#10326) by @Rich-T-kid in [#10326](https://github.com/apache/arrow-rs/pull/10326) +- Docs: trim release schedule for released versions (#10280) by @alamb in [#10280](https://github.com/apache/arrow-rs/pull/10280) +- Align parquet-geospatial crate docs with README (#10302) by @paleolimbot in [#10302](https://github.com/apache/arrow-rs/pull/10302) + +### Miscellaneous +- Arrow-avro: Deprecate object_store integration (#10484) by @brancz in [#10484](https://github.com/apache/arrow-rs/pull/10484) +- Parquet: Remove explicit `object_store` integration (#10354) by @brancz in [#10354](https://github.com/apache/arrow-rs/pull/10354) +- Fix(parquet): restore opaque return type for `RowSelection::iter` (#10450) by @haohuaijin in [#10450](https://github.com/apache/arrow-rs/pull/10450) +- Refactor(parquet): split `arrow_reader/selection` into smaller modules (#10434) by @haohuaijin in [#10434](https://github.com/apache/arrow-rs/pull/10434) +- Chore: deduplicate filter nulls code in coalesce/filter kernel (#10348) by @Jefffrey in [#10348](https://github.com/apache/arrow-rs/pull/10348) +- Chore: remove parquet dependency from parquet_derive (#10327) by @ByteBaker in [#10327](https://github.com/apache/arrow-rs/pull/10327) +- Remove the unmaintained paste dependency from arrow (#10303) by @Phoenix500526 in [#10303](https://github.com/apache/arrow-rs/pull/10303) +- Chore: formalize the default map field names to match default arrow spec (#10297) by @rluvaton in [#10297](https://github.com/apache/arrow-rs/pull/10297) -**Implemented enhancements:** - -- Fast path for nested `DictionaryArray` casting [\#10247](https://github.com/apache/arrow-rs/issues/10247) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] -- parquet/arrow: reading multiple nested columns fails with "Not all children array length are the same!" when a list continues across DataPageV2 page boundary [\#10243](https://github.com/apache/arrow-rs/issues/10243) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] -- Add product aggregate kernel to arrow-rs [\#10150](https://github.com/apache/arrow-rs/issues/10150) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] -- Stricter `DataType` parsing [\#10146](https://github.com/apache/arrow-rs/issues/10146) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] -- Support validating CSV headers against Schema [\#10143](https://github.com/apache/arrow-rs/issues/10143) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] -- arrow-ipc: Supports compression level configuration for arrow-ipc writer [\#10132](https://github.com/apache/arrow-rs/issues/10132) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] -- \[Variant\] `VariantArray` field API naming [\#10093](https://github.com/apache/arrow-rs/issues/10093) -- Add `StructArray::field_` APIs symmetric to `StructArray::column_` ones [\#10092](https://github.com/apache/arrow-rs/issues/10092) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] -- arrow-buffer: implement Saturating, CheckedShl, Not num-traits for i256 [\#10087](https://github.com/apache/arrow-rs/issues/10087) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] -- feat: native concat for `MapArray` [\#10047](https://github.com/apache/arrow-rs/issues/10047) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] -- \[Variant\] Add `variant_to_arrow` `Dictionary/REE` type support [\#10013](https://github.com/apache/arrow-rs/issues/10013) - -**Fixed bugs:** - -- arrow-row on fixed size binary/list with size 0 and no nulls return wrong length [\#10270](https://github.com/apache/arrow-rs/issues/10270) -- casting list to 0-size fixedsizelist can cause incorrect output length [\#10227](https://github.com/apache/arrow-rs/issues/10227) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] -- Buffer count mismatched with metadata when encoding records with dictionary of dictionaries [\#10213](https://github.com/apache/arrow-rs/issues/10213) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] -- `Buffer::into_mutable` is not consistent regarding sliced data and can lead to panics [\#10117](https://github.com/apache/arrow-rs/issues/10117) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] -- parquet\_derive: cannot read or write columns whose name is a Rust keyword \(raw identifiers like r\#type become column "r\#type"\) [\#10112](https://github.com/apache/arrow-rs/issues/10112) -- parquet: fix OffsetBuffer panic on corrupt input [\#10107](https://github.com/apache/arrow-rs/issues/10107) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] -- Parquet geospatial conversion uses metadata key "algorithm" instead of "edges" in geoarrow metadata [\#9929](https://github.com/apache/arrow-rs/issues/9929) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] - -**Documentation updates:** - -- doc: More comments to `concat_batches` [\#10178](https://github.com/apache/arrow-rs/pull/10178) ([2010YOUY01](https://github.com/2010YOUY01)) -- Minor: improve PageStore docs with a temp-file spilling example [\#10074](https://github.com/apache/arrow-rs/pull/10074) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([alamb](https://github.com/alamb)) - -**Performance improvements:** - -- perf: interleave\_list for List\ could be optimized? [\#10022](https://github.com/apache/arrow-rs/issues/10022) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] -- perf\(arrow-ord\): Avoid full index materialization for small-limit lexsorts [\#9990](https://github.com/apache/arrow-rs/issues/9990) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] -- Replace conversion of binary-\>string in arrow-row from arraydata to direct construction [\#10261](https://github.com/apache/arrow-rs/pull/10261) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) -- \[arrow-flight encode path\]re-use flatbufferbuilder [\#10220](https://github.com/apache/arrow-rs/pull/10220) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Rich-T-kid](https://github.com/Rich-T-kid)) -- \[10125\] arrow-flight decode path optimizations \(add `skip_validation` to arrow-flight\) [\#10206](https://github.com/apache/arrow-rs/pull/10206) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] [[arrow-flight](https://github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://github.com/Rich-T-kid)) -- Improve performance of `concat_elements` ByteViewArray concatenation [\#10161](https://github.com/apache/arrow-rs/pull/10161) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([pepijnve](https://github.com/pepijnve)) -- \[arrow-flight\] Optimize flight, remove some allocations, add dictionary focused benchmarks [\#10126](https://github.com/apache/arrow-rs/pull/10126) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] [[arrow-flight](https://github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://github.com/Rich-T-kid)) -- optimize\(concat\): concat map implementation [\#10048](https://github.com/apache/arrow-rs/pull/10048) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([mapleFU](https://github.com/mapleFU)) -- Reduce copies in Arrow IPC writer [\#10044](https://github.com/apache/arrow-rs/pull/10044) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Rich-T-kid](https://github.com/Rich-T-kid)) -- perf\(interleave\): Optimize list interleave\_list when child is primitive [\#10025](https://github.com/apache/arrow-rs/pull/10025) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([mapleFU](https://github.com/mapleFU)) - -**Closed issues:** - -- Soundness: Unsound alignment contract in public `FromBytes` trait and `BitReader::get_batch` [\#10164](https://github.com/apache/arrow-rs/issues/10164) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] -- ParquetPushDecoder: expose the next row-group index that try\_next\_reader will yield [\#10148](https://github.com/apache/arrow-rs/issues/10148) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] -- arrow-ipc: Extend writer benchmarks to include dictionaries [\#10119](https://github.com/apache/arrow-rs/issues/10119) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] -- bench\(parquet\): benchmark for nested list write [\#10083](https://github.com/apache/arrow-rs/issues/10083) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] -- Support i256 implement From\ [\#10080](https://github.com/apache/arrow-rs/issues/10080) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] - -**Merged pull requests:** - -- fix\(arrow-row\): allow to convert non empty fixed size binary/list array with size length 0 and no nulls [\#10271](https://github.com/apache/arrow-rs/pull/10271) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://github.com/rluvaton)) -- chore: Fix audit CI run by ignore quick-xml audit advisories [\#10267](https://github.com/apache/arrow-rs/pull/10267) ([alamb](https://github.com/alamb)) -- fix main: parquet test compilation failure [\#10266](https://github.com/apache/arrow-rs/pull/10266) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([Jefffrey](https://github.com/Jefffrey)) -- minor: drive-by refactors for dicts in substring & filter [\#10264](https://github.com/apache/arrow-rs/pull/10264) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) -- Add validated row decode benchmark [\#10259](https://github.com/apache/arrow-rs/pull/10259) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://github.com/alamb)) -- arrow-cast: Add optimized path for unnesting a dict [\#10248](https://github.com/apache/arrow-rs/pull/10248) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([brancz](https://github.com/brancz)) -- feat: support uuid from fixed type of length 16 [\#10241](https://github.com/apache/arrow-rs/pull/10241) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([ariel-miculas](https://github.com/ariel-miculas)) -- chore\(deps\): bump actions/cache from 6.0.0 to 6.1.0 [\#10240](https://github.com/apache/arrow-rs/pull/10240) ([dependabot[bot]](https://github.com/apps/dependabot)) -- fix: Rename parquet feature flag 'flate2-rust\_backened' to 'flate2-rust\_backend' [\#10239](https://github.com/apache/arrow-rs/pull/10239) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([dannycjones](https://github.com/dannycjones)) -- chore: Make clippy::question\_mark happy [\#10231](https://github.com/apache/arrow-rs/pull/10231) ([Tpt](https://github.com/Tpt)) -- fix\(ipc\): reject dictionary-encoded dictionary values [\#10230](https://github.com/apache/arrow-rs/pull/10230) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([goutamadwant](https://github.com/goutamadwant)) -- Replace `ArrayData` with direct `Array` construction in `arrow-row` [\#10229](https://github.com/apache/arrow-rs/pull/10229) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) -- fix: casting list to fixedsizelist didn't respect input length [\#10228](https://github.com/apache/arrow-rs/pull/10228) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) -- chore: Fix clippy::byte\_char\_slices \(use byte strings instead of explicit arrays\) [\#10225](https://github.com/apache/arrow-rs/pull/10225) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Tpt](https://github.com/Tpt)) -- nit: arrow-pyarrow: Use string interning [\#10224](https://github.com/apache/arrow-rs/pull/10224) ([Tpt](https://github.com/Tpt)) -- Support concatenation of mixed FixedSizeBinary via `concat_elements_dyn` [\#10222](https://github.com/apache/arrow-rs/pull/10222) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([pepijnve](https://github.com/pepijnve)) -- rename Compression struct [\#10221](https://github.com/apache/arrow-rs/pull/10221) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] [[arrow-flight](https://github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://github.com/Rich-T-kid)) -- chore\(deps\): bump the all-other-cargo-deps group across 1 directory with 16 updates [\#10218](https://github.com/apache/arrow-rs/pull/10218) ([dependabot[bot]](https://github.com/apps/dependabot)) -- chore\(deps\): bump actions/setup-python from 6.2.0 to 6.3.0 [\#10210](https://github.com/apache/arrow-rs/pull/10210) ([dependabot[bot]](https://github.com/apps/dependabot)) -- \[10125\] Introduce mult-batch decode benchmarks [\#10207](https://github.com/apache/arrow-rs/pull/10207) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] [[arrow-flight](https://github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://github.com/Rich-T-kid)) -- chore\(deps\): bump actions/cache from 5.0.5 to 6.0.0 [\#10203](https://github.com/apache/arrow-rs/pull/10203) ([dependabot[bot]](https://github.com/apps/dependabot)) -- introduce decode benchmarks [\#10202](https://github.com/apache/arrow-rs/pull/10202) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] [[arrow-flight](https://github.com/apache/arrow-rs/labels/arrow-flight)] ([Rich-T-kid](https://github.com/Rich-T-kid)) -- Fix `merge_kernels` benchmark panic due to not wrapping with `Scalar` [\#10199](https://github.com/apache/arrow-rs/pull/10199) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) -- Benchmarks and performance improvement for parquet boolean reader [\#10196](https://github.com/apache/arrow-rs/pull/10196) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([jhorstmann](https://github.com/jhorstmann)) -- add stale PR workflow [\#10194](https://github.com/apache/arrow-rs/pull/10194) ([Jefffrey](https://github.com/Jefffrey)) -- chore: group minor/patch dependabot updates [\#10193](https://github.com/apache/arrow-rs/pull/10193) ([Jefffrey](https://github.com/Jefffrey)) -- chore\(deps\): bump http from 1.4.0 to 1.4.2 [\#10191](https://github.com/apache/arrow-rs/pull/10191) ([dependabot[bot]](https://github.com/apps/dependabot)) -- chore\(deps\): bump syn from 2.0.117 to 2.0.118 [\#10190](https://github.com/apache/arrow-rs/pull/10190) ([dependabot[bot]](https://github.com/apps/dependabot)) -- chore\(deps\): bump chrono from 0.4.44 to 0.4.45 [\#10188](https://github.com/apache/arrow-rs/pull/10188) ([dependabot[bot]](https://github.com/apps/dependabot)) -- chore\(deps\): bump uuid from 1.23.1 to 1.23.3 [\#10186](https://github.com/apache/arrow-rs/pull/10186) ([dependabot[bot]](https://github.com/apps/dependabot)) -- chore: run `cargo update` to bump quinn [\#10181](https://github.com/apache/arrow-rs/pull/10181) ([Jefffrey](https://github.com/Jefffrey)) -- test: cover signed integers and bool in BitReader::get\_batch test [\#10180](https://github.com/apache/arrow-rs/pull/10180) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([alamb](https://github.com/alamb)) -- \[arrow-select\] perf: Replace `ArrayData` with direct `Array` construction in take kernels [\#10176](https://github.com/apache/arrow-rs/pull/10176) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([liamzwbao](https://github.com/liamzwbao)) -- Return PyValueError for nullable PyArrow struct imports [\#10174](https://github.com/apache/arrow-rs/pull/10174) ([fallintoplace](https://github.com/fallintoplace)) -- Fix Variant time microsecond JSON formatting [\#10173](https://github.com/apache/arrow-rs/pull/10173) ([fallintoplace](https://github.com/fallintoplace)) -- Split traits for plain and bitpacked decoding and fix soundness issue in BitReader::get\_batch [\#10172](https://github.com/apache/arrow-rs/pull/10172) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([jhorstmann](https://github.com/jhorstmann)) -- fix: switch generic usages of `i128` to `IntervalMonthDayNano` for MonthDayNano type [\#10171](https://github.com/apache/arrow-rs/pull/10171) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) -- chore: specify `--locked` when cargo installing `cargo-audit` [\#10170](https://github.com/apache/arrow-rs/pull/10170) ([Jefffrey](https://github.com/Jefffrey)) -- chore: Fix clippy::useless\_borrows\_in\_formatting [\#10163](https://github.com/apache/arrow-rs/pull/10163) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Tpt](https://github.com/Tpt)) -- fix\(arrow-cast\): respect cast safety for overflowing temporal casts [\#10162](https://github.com/apache/arrow-rs/pull/10162) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([SAY-5](https://github.com/SAY-5)) -- chore\(deps\): bump actions/checkout from 6 to 7 [\#10159](https://github.com/apache/arrow-rs/pull/10159) ([dependabot[bot]](https://github.com/apps/dependabot)) -- feat\(parquet\): add ParquetPushDecoder::peek\_next\_row\_group\(\) [\#10158](https://github.com/apache/arrow-rs/pull/10158) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([zhuqi-lucas](https://github.com/zhuqi-lucas)) -- feat\(pyarrow\) `FromPyArrow` on `Vec`: allow any iterable for input [\#10155](https://github.com/apache/arrow-rs/pull/10155) ([Tpt](https://github.com/Tpt)) -- nit: pyarrow: simplify class validation error creation [\#10154](https://github.com/apache/arrow-rs/pull/10154) ([Tpt](https://github.com/Tpt)) -- \[Variant\] add doc reference to `VariantArrayBuilder` [\#10152](https://github.com/apache/arrow-rs/pull/10152) ([sdf-jkl](https://github.com/sdf-jkl)) -- feat: Adds product aggregate compute kernel [\#10151](https://github.com/apache/arrow-rs/pull/10151) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([devanbenz](https://github.com/devanbenz)) -- Stricter datatype parsing for decimals, fixedsizelists and time32/64 [\#10147](https://github.com/apache/arrow-rs/pull/10147) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) -- feat\(arrow\_csv\): add header validation option [\#10144](https://github.com/apache/arrow-rs/pull/10144) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([XiNiHa](https://github.com/XiNiHa)) -- \[Parquet\] route dictionary page through the PageStore [\#10142](https://github.com/apache/arrow-rs/pull/10142) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([liamzwbao](https://github.com/liamzwbao)) -- chore: update pyo3 dependency to 0.29 [\#10134](https://github.com/apache/arrow-rs/pull/10134) ([timsaucer](https://github.com/timsaucer)) -- feat\(ipc\): Supports compression level configuration [\#10133](https://github.com/apache/arrow-rs/pull/10133) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([wForget](https://github.com/wForget)) -- fix: write error for dbg output of out of range timestamps [\#10130](https://github.com/apache/arrow-rs/pull/10130) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Jefffrey](https://github.com/Jefffrey)) -- \[Variant\] `VariantArray` field API naming [\#10124](https://github.com/apache/arrow-rs/pull/10124) ([sdf-jkl](https://github.com/sdf-jkl)) -- feat\(arrow\_array\): add helper function to create MapArray from `Vec)>>>` for tests [\#10123](https://github.com/apache/arrow-rs/pull/10123) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] [[arrow-flight](https://github.com/apache/arrow-rs/labels/arrow-flight)] ([rluvaton](https://github.com/rluvaton)) -- perf\(arrow-ipc\): Add writer benchmarks for dictionaries [\#10122](https://github.com/apache/arrow-rs/pull/10122) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([JakeDern](https://github.com/JakeDern)) -- feat: support `MapArray` in lengths kernel [\#10121](https://github.com/apache/arrow-rs/pull/10121) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://github.com/rluvaton)) -- feat: add `OffsetBuffer::subtract` to allow to shift offsets by value [\#10120](https://github.com/apache/arrow-rs/pull/10120) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://github.com/rluvaton)) -- fix: `Buffer::into_mutable` return error instead of panic for converting owned sliced when not start at 0 and fix returned Mutable length [\#10118](https://github.com/apache/arrow-rs/pull/10118) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://github.com/rluvaton)) -- chore: update `Bytes` visibility to correctly reflect the actual visibility [\#10115](https://github.com/apache/arrow-rs/pull/10115) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([rluvaton](https://github.com/rluvaton)) -- fix\(parquet\_derive\): support raw identifiers as column names [\#10113](https://github.com/apache/arrow-rs/pull/10113) ([cbmixx](https://github.com/cbmixx)) -- removed clippy ignore statment [\#10111](https://github.com/apache/arrow-rs/pull/10111) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([Rich-T-kid](https://github.com/Rich-T-kid)) -- Add `StructArray::field_` APIs symmetric to `StructArray::column_` ones [\#10110](https://github.com/apache/arrow-rs/pull/10110) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([sdf-jkl](https://github.com/sdf-jkl)) -- fix\(parquet\): return error instead of panicking in pad\_nulls on corrupt input [\#10108](https://github.com/apache/arrow-rs/pull/10108) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([thepenguinco](https://github.com/thepenguinco)) -- Minor: Add interleave tests for List\ and List\ [\#10099](https://github.com/apache/arrow-rs/pull/10099) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://github.com/alamb)) -- Add arrow-flight test coverage for IPC compression [\#10097](https://github.com/apache/arrow-rs/pull/10097) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] [[arrow-flight](https://github.com/apache/arrow-rs/labels/arrow-flight)] ([alamb](https://github.com/alamb)) -- chore\(deps\): bump pyspark from 3.3.2 to 3.4.4 in /parquet/pytest [\#10091](https://github.com/apache/arrow-rs/pull/10091) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([dependabot[bot]](https://github.com/apps/dependabot)) -- refactor\(parquet\): bundle array reader recursion args into `ReaderArgs` [\#10089](https://github.com/apache/arrow-rs/pull/10089) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([HippoBaro](https://github.com/HippoBaro)) -- arrow-buffer: implement Saturating, Checked num-traits for i256 [\#10088](https://github.com/apache/arrow-rs/pull/10088) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([theirix](https://github.com/theirix)) -- bench\(parquet\): add nested list writer benchmarks [\#10084](https://github.com/apache/arrow-rs/pull/10084) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([mapleFU](https://github.com/mapleFU)) -- Implement From\ for i256 [\#10081](https://github.com/apache/arrow-rs/pull/10081) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([AdamGS](https://github.com/AdamGS)) -- test\(parquet\): drop confusing `main` reference in page-roundtrip test comment [\#10072](https://github.com/apache/arrow-rs/pull/10072) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([adriangb](https://github.com/adriangb)) -- ci: Split miri tests into 4 parallel shards [\#10067](https://github.com/apache/arrow-rs/pull/10067) ([AdamGS](https://github.com/AdamGS)) -- Add tests and fix corner cases for Parquet/GeoArrow extension type conversion [\#10065](https://github.com/apache/arrow-rs/pull/10065) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([paleolimbot](https://github.com/paleolimbot)) -- Support writing REE arrays directly to Parquet [\#10064](https://github.com/apache/arrow-rs/pull/10064) [[parquet](https://github.com/apache/arrow-rs/labels/parquet)] ([Rich-T-kid](https://github.com/Rich-T-kid)) -- test\(arrow-select\): additional tests for inline-view filter fast path \(tests for \#9755\) [\#10054](https://github.com/apache/arrow-rs/pull/10054) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://github.com/alamb)) -- test\(arrow-select\): add take\_bytes coverage for sliced values and nullable offset overflow [\#10053](https://github.com/apache/arrow-rs/pull/10053) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://github.com/alamb)) -- Consolidate `filter_null_mask` into `FilterPredicate::filter_nulls` [\#10049](https://github.com/apache/arrow-rs/pull/10049) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([alamb](https://github.com/alamb)) -- \[Variant\] Add `VariantBuilder` values check [\#10016](https://github.com/apache/arrow-rs/pull/10016) ([sdf-jkl](https://github.com/sdf-jkl)) -- \[Variant\] Preserve `UUID` extension type metadata for Parquet writer [\#10015](https://github.com/apache/arrow-rs/pull/10015) ([sdf-jkl](https://github.com/sdf-jkl)) -- feat\(parquet-variant\): add Dictionary and REE variant\_to\_arrow support [\#10014](https://github.com/apache/arrow-rs/pull/10014) ([mneetika](https://github.com/mneetika)) -- perf\(arrow-ord\): Avoid full index materialization for small-limit lexsorts [\#9991](https://github.com/apache/arrow-rs/pull/9991) [[arrow](https://github.com/apache/arrow-rs/labels/arrow)] ([pchintar](https://github.com/pchintar)) - - - -\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)* diff --git a/dev/release/README.md b/dev/release/README.md index eeadae14c667..8de898863ddc 100644 --- a/dev/release/README.md +++ b/dev/release/README.md @@ -61,7 +61,8 @@ git pull git checkout -b # Update versions. -sed -i '' -e 's/14.0.0/39.0.0/g' `find . -name 'Cargo.toml' -or -name '*.md' | grep -v CHANGELOG.md | grep -v README.md` +sed -i '' -e 's/14.0.0/39.0.0/g' `find . -name 'Cargo.toml' -or -name '*.md' | grep -v CHANGELOG.md | grep -v CHANGELOG-old.md | grep -v README.md` +cargo check # update Cargo.lock with new versions git commit -a -m 'Update version' # Assuming remote name is apache; if named differently ensure this is changed, From 0090435d0fc41677b0fe43f5b0327d0d4818b465 Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Fri, 31 Jul 2026 11:27:45 -0400 Subject: [PATCH 07/10] Use PR title rather than commit message --- cliff.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cliff.toml b/cliff.toml index 6da8ac561bc9..d661dc264374 100644 --- a/cliff.toml +++ b/cliff.toml @@ -46,7 +46,7 @@ body = """ {% for group, commits in commits | group_by(attribute="group") %} ### {{ group | striptags | trim | upper_first }} {%- for commit in commits %} -- {{ commit.message | split(pat="\n") | first | upper_first | trim }}\ +- {% if commit.remote.pr_title %}{{ commit.remote.pr_title | upper_first | 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 }}) \ From aa06ebe3aa132f354c4d4ab84e24a6d0eef4d265 Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Fri, 31 Jul 2026 11:29:45 -0400 Subject: [PATCH 08/10] do not capitalize the first letter --- cliff.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cliff.toml b/cliff.toml index d661dc264374..5cd02a498c0e 100644 --- a/cliff.toml +++ b/cliff.toml @@ -46,7 +46,7 @@ body = """ {% 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 | upper_first | trim }}{% else %}{{ commit.message | split(pat="\n") | first | upper_first | trim }}{% endif %}\ +- {% 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 }}) \ From 3ba3e2a5ea34a646185986bf5258e7b96a8f7e4c Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Fri, 31 Jul 2026 11:30:06 -0400 Subject: [PATCH 09/10] Update Changelog to reflect PR title --- CHANGELOG.md | 110 +++++++++++++++++++++++++-------------------------- 1 file changed, 55 insertions(+), 55 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 87ea1a1d7d4a..a6d0e632c877 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,67 +25,67 @@ [Full Changelog](https://github.com/apache/arrow-rs/compare/59.1.0...59.2.0) ### Enhancements -- Chore: add unchecked array builder methods (#10440) by @Rich-T-kid in [#10440](https://github.com/apache/arrow-rs/pull/10440) -- Feat(arrow-ipc): add sans-IO stream encoder (#10277) by @Phoenix500526 in [#10277](https://github.com/apache/arrow-rs/pull/10277) -- Support suffix white space in arrow-cast parse (#10396) by @Rich-T-kid in [#10396](https://github.com/apache/arrow-rs/pull/10396) -- Feat(coalesce): add size function (#10331) by @rluvaton in [#10331](https://github.com/apache/arrow-rs/pull/10331) -- Fix(parquet): support mask filtering across skipped pages (#10288) by @hhhizzz in [#10288](https://github.com/apache/arrow-rs/pull/10288) -- Support white space prefixed parse for ints and floats (#10374) by @Rich-T-kid in [#10374](https://github.com/apache/arrow-rs/pull/10374) -- Make more of i256 available in const code (#10363) by @AdamGS in [#10363](https://github.com/apache/arrow-rs/pull/10363) -- Expose builder buffer capacity accessors (#10342) by @Weijun-H in [#10342](https://github.com/apache/arrow-rs/pull/10342) -- Add interval multiplication by i64 (#10336) by @peterxcli in [#10336](https://github.com/apache/arrow-rs/pull/10336) -- Make `parquet-index` work with column paths (#10330) by @korowa in [#10330](https://github.com/apache/arrow-rs/pull/10330) -- Feat(arrow-csv): add support for parsing `Float16` (#10343) by @Glatzel in [#10343](https://github.com/apache/arrow-rs/pull/10343) -- [Variant] Add `variant_to_arrow` `Map` type support (#10307) by @sdf-jkl in [#10307](https://github.com/apache/arrow-rs/pull/10307) +- chore(arrow): add unchecked array builder methods by @Rich-T-kid in [#10440](https://github.com/apache/arrow-rs/pull/10440) +- feat(arrow-ipc): add sans-IO stream encoder by @Phoenix500526 in [#10277](https://github.com/apache/arrow-rs/pull/10277) +- chore(arrow-cast): support suffix white space in arrow-cast parse by @Rich-T-kid in [#10396](https://github.com/apache/arrow-rs/pull/10396) +- feat(coalesce): add size function by @rluvaton in [#10331](https://github.com/apache/arrow-rs/pull/10331) +- fix(parquet): support mask filtering across skipped pages by @hhhizzz in [#10288](https://github.com/apache/arrow-rs/pull/10288) +- chore(arrow-cast): support white space prefixed parse for ints and floats by @Rich-T-kid in [#10374](https://github.com/apache/arrow-rs/pull/10374) +- chore(arrow-buffer): Make more of i256 available in const code by @AdamGS in [#10363](https://github.com/apache/arrow-rs/pull/10363) +- feat(arrow-array): Expose builder buffer capacity accessors by @Weijun-H in [#10342](https://github.com/apache/arrow-rs/pull/10342) +- feat(arrow-arith): Add interval multiplication by i64 by @peterxcli in [#10336](https://github.com/apache/arrow-rs/pull/10336) +- fix: Make `parquet-index` work with column paths by @korowa in [#10330](https://github.com/apache/arrow-rs/pull/10330) +- feat(arrow-csv): add support for parsing `Float16` by @Glatzel in [#10343](https://github.com/apache/arrow-rs/pull/10343) +- feat(variant): Add `variant_to_arrow` `Map` type support by @sdf-jkl in [#10307](https://github.com/apache/arrow-rs/pull/10307) ### Bug fixes -- Fix(arrow-json): validate ListView child nullability (#10486) by @dk3yyyy in [#10486](https://github.com/apache/arrow-rs/pull/10486) -- Fix(arrow-json): validate map value nullability (#10475) by @subotac in [#10475](https://github.com/apache/arrow-rs/pull/10475) -- Avro: bound VLQDecoder::long against overlong varints (#10407) by @STiFLeR7 in [#10407](https://github.com/apache/arrow-rs/pull/10407) -- Arrow-row: Fix decode_fixed_size_list to apply the corrected_type step for dictionary children (#10414) by @zhuqi-lucas in [#10414](https://github.com/apache/arrow-rs/pull/10414) -- [Variant] make `value` mandatory field for `VariantArray`/`ShreddingState` (#10318) by @sdf-jkl in [#10318](https://github.com/apache/arrow-rs/pull/10318) -- Fix off by one error for slice accounting (#10406) by @Rich-T-kid in [#10406](https://github.com/apache/arrow-rs/pull/10406) -- Fix: `GenericByteViewArray::gc()` drops inline views on the multi-buffer slow path (#10287) by @adriangb in [#10287](https://github.com/apache/arrow-rs/pull/10287) -- Fix(arrow-json): render coerced f32 as its value in the string decoder (#10386) by @hareshkh in [#10386](https://github.com/apache/arrow-rs/pull/10386) -- Fix(arrow-cast): make `b64_encode` reject invalid UTF-8 from misbehaving `Engine` impls (#10324) by @bit2swaz in [#10324](https://github.com/apache/arrow-rs/pull/10324) -- Fix: take FFI_ArrowArrayStream errno values from libc (#10299) by @fornwall in [#10299](https://github.com/apache/arrow-rs/pull/10299) -- Fix(arrow-data): allow full dictionary key range when concatenating (#10323) by @raphaelroshan in [#10323](https://github.com/apache/arrow-rs/pull/10323) -- Don't panic on invalid c ffi schema name (#10328) by @robert3005 in [#10328](https://github.com/apache/arrow-rs/pull/10328) -- Fix(REE): check upfront if sorting empty array or 0 limit (#10293) by @Jefffrey in [#10293](https://github.com/apache/arrow-rs/pull/10293) -- Fix(arrow-avro): bound untrusted OCF block size and item counts (#10237) by @miniex in [#10237](https://github.com/apache/arrow-rs/pull/10237) -- Fix(arrow-array): disallow creating `MapArray` with nullable key field (#10272) by @rluvaton in [#10272](https://github.com/apache/arrow-rs/pull/10272) -- Fix: don't panic on `ArrayData::try_new` on bad input even when `force_validate` feature is on (#10282) by @rluvaton in [#10282](https://github.com/apache/arrow-rs/pull/10282) +- fix(arrow-json): validate ListView child nullability by @dk3yyyy in [#10486](https://github.com/apache/arrow-rs/pull/10486) +- fix(arrow-json): validate map value nullability by @subotac in [#10475](https://github.com/apache/arrow-rs/pull/10475) +- avro: bound VLQDecoder::long against overlong varints by @STiFLeR7 in [#10407](https://github.com/apache/arrow-rs/pull/10407) +- arrow-row: Fix decode_fixed_size_list to apply the corrected_type step for dictionary children by @zhuqi-lucas in [#10414](https://github.com/apache/arrow-rs/pull/10414) +- [Variant] make `value` mandatory field for `VariantArray`/`ShreddingState` by @sdf-jkl in [#10318](https://github.com/apache/arrow-rs/pull/10318) +- fix off by one error for slice accounting by @Rich-T-kid in [#10406](https://github.com/apache/arrow-rs/pull/10406) +- fix: `GenericByteViewArray::gc()` drops inline views on the multi-buffer slow path by @adriangb in [#10287](https://github.com/apache/arrow-rs/pull/10287) +- fix(arrow-json): render coerced f32 as its value in the string decoder by @hareshkh in [#10386](https://github.com/apache/arrow-rs/pull/10386) +- fix(arrow-cast): make `b64_encode` reject invalid UTF-8 from misbehaving `Engine` impls by @bit2swaz in [#10324](https://github.com/apache/arrow-rs/pull/10324) +- fix: take FFI_ArrowArrayStream errno values from libc by @fornwall in [#10299](https://github.com/apache/arrow-rs/pull/10299) +- fix(arrow-data): allow full dictionary key range when concatenating by @raphaelroshan in [#10323](https://github.com/apache/arrow-rs/pull/10323) +- Don't panic on invalid c ffi schema name by @robert3005 in [#10328](https://github.com/apache/arrow-rs/pull/10328) +- fix(REE): check upfront if sorting empty array or 0 limit by @Jefffrey in [#10293](https://github.com/apache/arrow-rs/pull/10293) +- fix(arrow-avro): bound untrusted OCF block size and item counts by @miniex in [#10237](https://github.com/apache/arrow-rs/pull/10237) +- fix(arrow-array): disallow creating `MapArray` with nullable key field by @rluvaton in [#10272](https://github.com/apache/arrow-rs/pull/10272) +- fix: don't panic on `ArrayData::try_new` on bad input even when `force_validate` feature is on by @rluvaton in [#10282](https://github.com/apache/arrow-rs/pull/10282) ### Performance improvements -- Perf(parquet): slice up contiguous buffer for decimals and fsb (#10364) by @MassivePizza in [#10364](https://github.com/apache/arrow-rs/pull/10364) -- Feat(parquet): `RowSelection` can be backed by a `BooleanBuffer` (#10141) by @haohuaijin in [#10141](https://github.com/apache/arrow-rs/pull/10141) -- Perf(parquet): use Cursor in ZSTDCodec to avoid Vec alloc and copy (#10345) by @MassivePizza in [#10345](https://github.com/apache/arrow-rs/pull/10345) -- Optimize(parquet): Nested list batching child.write calls (#10085) by @mapleFU in [#10085](https://github.com/apache/arrow-rs/pull/10085) -- Perf(parquet): splice buffered pages with `write_all` instead of `io::copy` (adapts #10052) (#10353) by @adriangb in [#10353](https://github.com/apache/arrow-rs/pull/10353) -- Hoist calls for null_sentinel (#10356) by @Rich-T-kid in [#10356](https://github.com/apache/arrow-rs/pull/10356) -- Perf: speed up substring_by_char with an ASCII fast path and single-pass bounds (#10334) by @andygrove in [#10334](https://github.com/apache/arrow-rs/pull/10334) -- Cache encoded field name in FieldEncoder (#10296) by @MassivePizza in [#10296](https://github.com/apache/arrow-rs/pull/10296) -- Perf: allow users to skip utf8 validation (#10319) by @Rich-T-kid in [#10319](https://github.com/apache/arrow-rs/pull/10319) -- Perf: Improve decimal addition and subtraction when scale is equal (#10333) by @AdamGS in [#10333](https://github.com/apache/arrow-rs/pull/10333) -- Optimize(interleave): implement interleave for FixedSizeList/Map type (#10046) by @mapleFU in [#10046](https://github.com/apache/arrow-rs/pull/10046) -- Perf: Pre-size buffer allocations to avoid intermediate allocations (#10262) by @Rich-T-kid in [#10262](https://github.com/apache/arrow-rs/pull/10262) -- Perf: create dictionary reader config and default unsafeflag to false (#10260) by @Rich-T-kid in [#10260](https://github.com/apache/arrow-rs/pull/10260) -- Perf: Introduce zero copy path when tonic returns an aligned buffer (#10273) by @Rich-T-kid in [#10273](https://github.com/apache/arrow-rs/pull/10273) -- Validate short view strings in separate buffer in arrow-row (#10250) by @Jefffrey in [#10250](https://github.com/apache/arrow-rs/pull/10250) +- perf(parquet): slice up contiguous buffer for decimals and fsb by @MassivePizza in [#10364](https://github.com/apache/arrow-rs/pull/10364) +- feat(parquet): `RowSelection` can be backed by a `BooleanBuffer` by @haohuaijin in [#10141](https://github.com/apache/arrow-rs/pull/10141) +- perf(parquet): use Cursor in ZSTDCodec to avoid Vec alloc and copy by @MassivePizza in [#10345](https://github.com/apache/arrow-rs/pull/10345) +- optimize(parquet): Nested list batching child.write calls by @mapleFU in [#10085](https://github.com/apache/arrow-rs/pull/10085) +- perf(parquet): splice buffered pages with `write_all` instead of `io::copy` (adapts #10052) by @adriangb in [#10353](https://github.com/apache/arrow-rs/pull/10353) +- hoist calls for null_sentinel by @Rich-T-kid in [#10356](https://github.com/apache/arrow-rs/pull/10356) +- perf: speed up substring_by_char with an ASCII fast path and single-pass bounds by @andygrove in [#10334](https://github.com/apache/arrow-rs/pull/10334) +- Cache encoded field name in FieldEncoder by @MassivePizza in [#10296](https://github.com/apache/arrow-rs/pull/10296) +- perf: allow users to skip utf8 validation in arrow-row by @Rich-T-kid in [#10319](https://github.com/apache/arrow-rs/pull/10319) +- perf: Improve decimal addition and subtraction when scale is equal by @AdamGS in [#10333](https://github.com/apache/arrow-rs/pull/10333) +- optimize(interleave): implement interleave for FixedSizeList/Map type by @mapleFU in [#10046](https://github.com/apache/arrow-rs/pull/10046) +- Perf: Pre-size buffer allocations to avoid intermediate allocations by @Rich-T-kid in [#10262](https://github.com/apache/arrow-rs/pull/10262) +- Perf: create dictionary reader config and default unsafeflag to false by @Rich-T-kid in [#10260](https://github.com/apache/arrow-rs/pull/10260) +- Perf: Introduce zero copy path when tonic returns an aligned buffer by @Rich-T-kid in [#10273](https://github.com/apache/arrow-rs/pull/10273) +- Validate short view strings in separate buffer in arrow-row by @Jefffrey in [#10250](https://github.com/apache/arrow-rs/pull/10250) ### Documentation updates -- Docs: clarify decimal negative scale behavior (#10304) by @ByteBaker in [#10304](https://github.com/apache/arrow-rs/pull/10304) -- Docs: fix mutableArrayData comments (#10326) by @Rich-T-kid in [#10326](https://github.com/apache/arrow-rs/pull/10326) -- Docs: trim release schedule for released versions (#10280) by @alamb in [#10280](https://github.com/apache/arrow-rs/pull/10280) -- Align parquet-geospatial crate docs with README (#10302) by @paleolimbot in [#10302](https://github.com/apache/arrow-rs/pull/10302) +- docs: clarify decimal negative scale behavior by @ByteBaker in [#10304](https://github.com/apache/arrow-rs/pull/10304) +- Docs: fix mutableArrayData comments by @Rich-T-kid in [#10326](https://github.com/apache/arrow-rs/pull/10326) +- docs: trim release schedule for released versions by @alamb in [#10280](https://github.com/apache/arrow-rs/pull/10280) +- Align parquet-geospatial crate docs with README by @paleolimbot in [#10302](https://github.com/apache/arrow-rs/pull/10302) ### Miscellaneous -- Arrow-avro: Deprecate object_store integration (#10484) by @brancz in [#10484](https://github.com/apache/arrow-rs/pull/10484) -- Parquet: Remove explicit `object_store` integration (#10354) by @brancz in [#10354](https://github.com/apache/arrow-rs/pull/10354) -- Fix(parquet): restore opaque return type for `RowSelection::iter` (#10450) by @haohuaijin in [#10450](https://github.com/apache/arrow-rs/pull/10450) -- Refactor(parquet): split `arrow_reader/selection` into smaller modules (#10434) by @haohuaijin in [#10434](https://github.com/apache/arrow-rs/pull/10434) -- Chore: deduplicate filter nulls code in coalesce/filter kernel (#10348) by @Jefffrey in [#10348](https://github.com/apache/arrow-rs/pull/10348) -- Chore: remove parquet dependency from parquet_derive (#10327) by @ByteBaker in [#10327](https://github.com/apache/arrow-rs/pull/10327) -- Remove the unmaintained paste dependency from arrow (#10303) by @Phoenix500526 in [#10303](https://github.com/apache/arrow-rs/pull/10303) -- Chore: formalize the default map field names to match default arrow spec (#10297) by @rluvaton in [#10297](https://github.com/apache/arrow-rs/pull/10297) +- arrow-avro: Deprecate object_store integration by @brancz in [#10484](https://github.com/apache/arrow-rs/pull/10484) +- parquet: deprecate explicit `object_store` integration by @brancz in [#10354](https://github.com/apache/arrow-rs/pull/10354) +- fix(parquet): restore opaque return type for `RowSelection::iter` by @haohuaijin in [#10450](https://github.com/apache/arrow-rs/pull/10450) +- refactor(parquet): split `arrow_reader/selection` into smaller modules by @haohuaijin in [#10434](https://github.com/apache/arrow-rs/pull/10434) +- chore: deduplicate filter nulls code in coalesce/filter kernel by @Jefffrey in [#10348](https://github.com/apache/arrow-rs/pull/10348) +- chore: remove parquet dependency from parquet_derive by @ByteBaker in [#10327](https://github.com/apache/arrow-rs/pull/10327) +- Remove the unmaintained paste dependency from arrow by @Phoenix500526 in [#10303](https://github.com/apache/arrow-rs/pull/10303) +- chore: formalize the default map field names to match default arrow spec by @rluvaton in [#10297](https://github.com/apache/arrow-rs/pull/10297) From 544d435a560346cc79a04aafaf917c42074d24da Mon Sep 17 00:00:00 2001 From: Andrew Lamb Date: Fri, 31 Jul 2026 11:34:12 -0400 Subject: [PATCH 10/10] Update changelog again --- CHANGELOG.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a6d0e632c877..2277e5202655 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -25,6 +25,7 @@ [Full Changelog](https://github.com/apache/arrow-rs/compare/59.1.0...59.2.0) ### Enhancements +- arrow-avro: Deprecate object_store integration by @brancz in [#10484](https://github.com/apache/arrow-rs/pull/10484) - chore(arrow): add unchecked array builder methods by @Rich-T-kid in [#10440](https://github.com/apache/arrow-rs/pull/10440) - feat(arrow-ipc): add sans-IO stream encoder by @Phoenix500526 in [#10277](https://github.com/apache/arrow-rs/pull/10277) - chore(arrow-cast): support suffix white space in arrow-cast parse by @Rich-T-kid in [#10396](https://github.com/apache/arrow-rs/pull/10396) @@ -36,6 +37,8 @@ - feat(arrow-arith): Add interval multiplication by i64 by @peterxcli in [#10336](https://github.com/apache/arrow-rs/pull/10336) - fix: Make `parquet-index` work with column paths by @korowa in [#10330](https://github.com/apache/arrow-rs/pull/10330) - feat(arrow-csv): add support for parsing `Float16` by @Glatzel in [#10343](https://github.com/apache/arrow-rs/pull/10343) +- Remove the unmaintained paste dependency from arrow by @Phoenix500526 in [#10303](https://github.com/apache/arrow-rs/pull/10303) +- chore: formalize the default map field names to match default arrow spec by @rluvaton in [#10297](https://github.com/apache/arrow-rs/pull/10297) - feat(variant): Add `variant_to_arrow` `Map` type support by @sdf-jkl in [#10307](https://github.com/apache/arrow-rs/pull/10307) ### Bug fixes @@ -80,12 +83,9 @@ - Align parquet-geospatial crate docs with README by @paleolimbot in [#10302](https://github.com/apache/arrow-rs/pull/10302) ### Miscellaneous -- arrow-avro: Deprecate object_store integration by @brancz in [#10484](https://github.com/apache/arrow-rs/pull/10484) - parquet: deprecate explicit `object_store` integration by @brancz in [#10354](https://github.com/apache/arrow-rs/pull/10354) - fix(parquet): restore opaque return type for `RowSelection::iter` by @haohuaijin in [#10450](https://github.com/apache/arrow-rs/pull/10450) - refactor(parquet): split `arrow_reader/selection` into smaller modules by @haohuaijin in [#10434](https://github.com/apache/arrow-rs/pull/10434) - chore: deduplicate filter nulls code in coalesce/filter kernel by @Jefffrey in [#10348](https://github.com/apache/arrow-rs/pull/10348) - chore: remove parquet dependency from parquet_derive by @ByteBaker in [#10327](https://github.com/apache/arrow-rs/pull/10327) -- Remove the unmaintained paste dependency from arrow by @Phoenix500526 in [#10303](https://github.com/apache/arrow-rs/pull/10303) -- chore: formalize the default map field names to match default arrow spec by @rluvaton in [#10297](https://github.com/apache/arrow-rs/pull/10297)