This is an automated email from the ASF dual-hosted git repository.

alamb pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/arrow-rs.git


The following commit(s) were added to refs/heads/main by this push:
     new 782e5a6855 Update version to 59.2.0, update changelog generation to 
git-cliff (#10451)
782e5a6855 is described below

commit 782e5a685501a9db6cc8e9a3b7cbff894940c47a
Author: Jeffrey Vo <[email protected]>
AuthorDate: Mon Aug 3 18:59:05 2026 +0900

    Update version to 59.2.0, update changelog generation to git-cliff (#10451)
    
    Note (from @alamb): This PR contains both:
    1. Update the version to 59.2.0
    2. Add 59.2.0 CHANGELOG; Rendered preview:
    
https://github.com/Jefffrey/arrow-rs/blob/better-changelog-generation/CHANGELOG.md
    3. Update dev/release/readme.md to use `git-cliff` rather than
    changelog_generator
    4. Remove other script
    
    `git-cliff` was a much nicer experience than the changelog generator
    (specifically it ran much faster)
    
    ---
    
    - Closes #9332
    - Part of https://github.com/apache/arrow-rs/issues/9879
    
    Testing out [git-cliff](https://git-cliff.org/) for generating our
    changelogs. In this PR I've included the config file, as well as an
    example changelog for upcoming 59.2.0 release.
    
    To install `git-cliff` can either cargo install or do via brew
    
    ```sh
    cargo install git-cliff
    brew install git-cliff
    ```
    
    - See their [installation
    guide](https://git-cliff.org/docs/installation/)
    
    Then we need to ensure we have the tags locally:
    
    ```sh
    # If remote for the apache remote is named differently ensure swap to the 
name here
    git fetch origin --tags
    ```
    
    - `git-cliff` operates via checking the commits since latest tag, so if
    we don't locally have the tags it'll generate a changelog since the
    start of time 🙂
    
    Then run command:
    
    ```sh
    git-cliff --tag 59.2.0 --unreleased --output EXAMPLE_CHANGELOG.md
    ```
    
    - Set github token via `GITHUB_TOKEN` environment variable, or can add
    to command via `--github-token`
    - This will create a changelog for all commits since the last non-rc tag
    on this branch, named `59.2.0` (we change this for each release), into a
    separate file
    
    Then can see what the generated changelog is like in this PR.
    `git-cliff` also supports prepending onto an existing changelog, in
    which case it removes the header (specified in the config), prepends new
    body, then re-adds the header:
    
    ```sh
    git-cliff --tag 59.2.0 --unreleased --prepend CHANGELOG.md
    ```
    
    - You could even have both `--output` and `--prepend` so long as they
    don't point to the same file
    
    # On categorization
    
    `git-cliff` looks only at PRs; it ignores issues. I prefer this approach
    as it makes it more clear which code we actually shipped. There was also
    an issue with our previous approach in that
    [`github-changelog-generator` didn't ignore issues closed as not
    
planned/duplicate](https://github.com/github-changelog-generator/github-changelog-generator/issues/1038)
    which can add noise to the changelog. By focusing only on PRs we don't
    need to worry about this, and we also don't need to bother labeling
    issues from their PRs anymore.
    
    However, we need to ensure our PRs have good labeling. This can come
    from maintainers adding labels, or having workflows to do some of this
    automation. For example we could:
    
    - Use a workflow to copy the bug/enhancement tag from an issue to the
    linked PR: https://github.com/michalvankodev/copy-issue-labels
    - Enhance existing labeling workflow, such as adding
    `development-process` to PRs that only touch benches/tests
    
    For now I've been going around to some PRs and adding labels to get some
    better categorization in this example.
    
    # Speed
    
    Oh also its blazing fast 😃 (well compared to old approach)
    
    ```sh
    arrow-rs (better-changelog-generation)$ time git-cliff --tag 59.2.0 
--unreleased --output EXAMPLE_CHANGELOG.md
    WARN  git_cliff_core::changelog > process_commits: 1 commit(s) were skipped 
due to field error(s) (run with `-vv` for details)
    
    ________________________________________________________
    Executed in   31.60 secs    fish           external
       usr time    4.35 secs    0.27 millis    4.35 secs
       sys time    3.75 secs    1.49 millis    3.75 secs
    ```
    
    - that warning is only popping because its from the commit of this
    branch, aka not a PR squash commit
    
    # Further work
    
    Need to update release instructions if going with this approach; also
    want to test out patch releases (aka test when we're not generating for
    commits off main)
    
    ---------
    
    Co-authored-by: Andrew Lamb <[email protected]>
---
 CHANGELOG-old.md                 | 139 ++++++++++++++++++++++++++
 CHANGELOG.md                     | 211 +++++++++++++--------------------------
 Cargo.lock                       |  52 +++++-----
 Cargo.toml                       |  42 ++++----
 cliff.toml                       |  84 ++++++++++++++++
 dev/release/README.md            |  52 +++++-----
 dev/release/label_issues.py      | 153 ----------------------------
 dev/release/update_change_log.sh |  76 --------------
 8 files changed, 365 insertions(+), 444 deletions(-)

diff --git a/CHANGELOG-old.md b/CHANGELOG-old.md
index 7371b8512f..6ef25a989f 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\<Primitive\> 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\<i128\> 
[\#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<T>`: 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<Option<Vec<(Key, Option<Value>)>>>` 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\<Decimal128\> and 
List\<Timestamp\(tz\)\> 
[\#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\<i128\> 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)
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 08dd44d9b0..134a161f9f 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -19,144 +19,77 @@
 
 # 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-08-02)
+
+[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)
+- 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)
+- 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
+- fix(arrow-schema): Persist dictionary ordered flag on FFI schema import by 
@borchero in [#10514](https://github.com/apache/arrow-rs/pull/10514)
+- 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 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
+- chore(parquet): add link to ticket in object_store deprecation message by 
@alamb in [#10502](https://github.com/apache/arrow-rs/pull/10502)
+- chore(avro): add link to ticket in object_store deprecation message by 
@alamb in [#10503](https://github.com/apache/arrow-rs/pull/10503)
+- 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
+- Revert "chore: formalize the default map field names to match default arrow 
spec (#10297)" by @alamb in 
[#10506](https://github.com/apache/arrow-rs/pull/10506)
+- 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)
 
-**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\<Primitive\> 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\<i128\> 
[\#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<T>`: 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<Option<Vec<(Key, Option<Value>)>>>` 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\<Decimal128\> and 
List\<Timestamp\(tz\)\> 
[\#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\<i128\> 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/Cargo.lock b/Cargo.lock
index b53a7736fd..5c3425d332 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 4e2048c26f..4274307c69 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 <[email protected]>"]
@@ -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"] }
 
diff --git a/cliff.toml b/cliff.toml
new file mode 100644
index 0000000000..5cd02a498c
--- /dev/null
+++ b/cliff.toml
@@ -0,0 +1,84 @@
+# git-cliff ~ configuration file
+# https://git-cliff.org/docs/configuration
+
+[remote.github]
+# For token set GITHUB_TOKEN env var or pass via --github-token
+owner = "apache"
+repo = "arrow-rs"
+
+[changelog]
+# Otherwise it removes the left padding in the license header
+trim = false
+
+header = """
+<!---
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+
+# Changelog
+"""
+body = """
+{%- macro remote_url() -%}
+  https://github.com/{{ remote.github.owner }}/{{ remote.github.repo }}
+{%- endmacro -%}
+
+{% if version %}
+## [{{ version }}]({{ self::remote_url() }}/tree/{{ version }}) - ({{ 
timestamp | date(format="%Y-%m-%d") }})
+{% else %}
+## [unreleased]
+{% endif %}
+[Full Changelog]({{ self::remote_url() }}/compare/{{ previous.version }}...{{ 
version }})
+{% for group, commits in commits | group_by(attribute="group") %}
+### {{ group | striptags | trim | upper_first }}
+  {%- for commit in commits %}
+- {% if commit.remote.pr_title %}{{ commit.remote.pr_title | trim }}{% else 
%}{{ commit.message | split(pat="\n") | first | upper_first | trim }}{% endif 
%}\
+    {% if commit.remote.username %} by @{{ commit.remote.username }}{%- endif 
-%}
+    {% if commit.remote.pr_number %} in \
+      [#{{ commit.remote.pr_number }}]({{ self::remote_url() }}/pull/{{ 
commit.remote.pr_number }}) \
+    {%- endif -%}
+  {% endfor %}
+{% endfor %}
+"""
+
+[git]
+# We don't use conventional commits
+conventional_commits = false
+filter_unconventional = false
+require_conventional = false
+
+# To make backport releases easier
+use_branch_tags = true
+# Ignoring rc tags
+tag_pattern = "^\\d+\\.\\d+\\.\\d+$"
+
+commit_parsers = [
+    # Grouping based on PR labels
+    { field = "remote.pr_labels", pattern = "api-change", group = "<!-- 0 
-->Breaking changes" },
+    { field = "remote.pr_labels", pattern = "security", group = "<!-- 1 
-->Security fixes" },
+    { field = "remote.pr_labels", pattern = "enhancement", group = "<!-- 2 
-->Enhancements" },
+    { field = "remote.pr_labels", pattern = "bug", group = "<!-- 3 -->Bug 
fixes" },
+    { field = "remote.pr_labels", pattern = "performance", group = "<!-- 4 
-->Performance improvements" },
+    { field = "remote.pr_labels", pattern = "documentation", group = "<!-- 5 
-->Documentation updates" },
+    { field = "remote.pr_labels", pattern = "development-process", skip = true 
},
+    # We could have a visible section for dependency updates if we want
+    { field = "remote.pr_labels", pattern = "auto-dependencies", skip = true },
+    # Ideally we minimize this last section as much as possible by ensuring PRs
+    # are labelled as above
+    { message = ".*", group = "<!-- 6 -->Miscellaneous" },
+]
+sort_commits = "newest"
diff --git a/dev/release/README.md b/dev/release/README.md
index 465fd82d4d..8de898863d 100644
--- a/dev/release/README.md
+++ b/dev/release/README.md
@@ -45,56 +45,50 @@ 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 <RELEASE_BRANCH>
 
-# Update versions. Make sure to run it before the next step since we do not 
want CHANGELOG-old.md affected.
-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`
+# 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 CHANGELOG-old.md | grep -v README.md`
+cargo check # update Cargo.lock with new versions
 git commit -a -m 'Update version'
 
-# ensure your github token is available
-export ARROW_GITHUB_API_TOKEN=<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=<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 <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 b004b7fa7f..0000000000
--- 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 c4d6f0c118..0000000000
--- 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=<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 '<!---
-  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.
--->
-' | cat - "${OUTPUT_PATH}" > "${OUTPUT_PATH}".tmp
-mv "${OUTPUT_PATH}".tmp "${OUTPUT_PATH}"

Reply via email to