Skip to content
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
236 changes: 236 additions & 0 deletions _posts/2026-10-08-26.0.0-release.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,236 @@
---
layout: post
title: "Apache Arrow 26.0.0 Release"
date: "2026-10-08 00:00:00"
author: pmc
categories: [release]
---
<!--
{% comment %}
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.
{% endcomment %}
-->

The Apache Arrow team is pleased to announce the 26.0.0 release. This release
covers over 3 months of development work and includes [**337 resolved
issues**][1] on [**403 distinct commits**][2] from [**108 distinct
contributors**][2]. See the [Install Page](https://arrow.apache.org/install/) to
learn how to get the libraries for your platform.

The release notes below are not exhaustive and only expose selected highlights
of the release. Many other bugfixes and improvements have been made: we refer
you to the [complete changelog][3].

## Community

Since the 25.0.0 release, Kosta Tarasov, Zehua Zou and Tadeja Kadunc have
been invited to become committers. Jeffrey Vo has been invited to join
the Project Management Committee (PMC).

Thanks for your contributions and participation in the project!

## Format Notes

The Tensor and SparseTensor IPC messages have been deprecated in the
specification, and the corresponding C++ APIs for reading and writing them have
been deprecated as well ([GH-51100](https://github.com/apache/arrow/issues/51100)).

## Arrow Flight RPC Notes

Work on the Flight SQL ODBC driver continued. RPM packages for the driver are now
built ([GH-47877](https://github.com/apache/arrow/issues/47877)).
On Windows, the driver is now statically linked ([GH-49538](https://github.com/apache/arrow/issues/49538)).

## C++ Notes

Most of the C++ JSON handling (integration tests, extension type metadata,
Parquet, Flight SQL ODBC...) has been migrated from RapidJSON to
[simdjson](https://github.com/simdjson/simdjson) for parsing and to a new
`JsonWriter` for serialization ([GH-50566](https://github.com/apache/arrow/issues/50566), [GH-50567](https://github.com/apache/arrow/issues/50567) and
follow-ups).

The Feather reader and writer V1 APIs have been deprecated in favour of the Arrow
IPC APIs ([GH-49231](https://github.com/apache/arrow/issues/49231)), in line with the corresponding Python and R deprecations.

### CSV

Two new parse options:
`pad_short_rows` fills in nulls for rows with missing trailing fields
([GH-50925](https://github.com/apache/arrow/issues/50925)), and `ignore_extra_columns` drops extra fields from rows that have
more columns than expected ([GH-50967](https://github.com/apache/arrow/issues/50967)).

### Compute

New `remainder` and `modulo` compute functions have been added ([GH-46901](https://github.com/apache/arrow/issues/46901)).

The temporal rounding functions (`floor_temporal`, `ceil_temporal` and
`round_temporal`) now accept duration inputs ([GH-50395](https://github.com/apache/arrow/issues/50395)).

Hash aggregations now support `string_view` and `binary_view` grouping keys
([GH-50223](https://github.com/apache/arrow/issues/50223)), and the `unique`, `value_counts` and `dictionary_encode` functions
now support `float16` inputs ([GH-50512](https://github.com/apache/arrow/issues/50512)).

### File Systems

**Breaking change:** the S3 filesystem and its AWS SDK dependency have been moved
out of `libarrow` into a separate `libarrow_s3` library ([GH-50194](https://github.com/apache/arrow/issues/50194)). This
reduces the size of `libarrow` for users who do not need S3. C++ users of the S3
filesystem now need to either link against `libarrow_s3` or load it at runtime
using `LoadFileSystemFactories`.

### Parquet

The schema nesting depth is now limited when parsing the Thrift metadata of a
Parquet file, turning a stack overflow on pathologically nested schemas into a
regular error ([GH-51238](https://github.com/apache/arrow/issues/51238)). The default limit (100) can be raised if needed.

Reading Parquet files with unrecognized combinations of logical and physical
types is now tolerated instead of failing ([GH-50910](https://github.com/apache/arrow/issues/50910)).

A new low-level dense decoding API allows `FIXED_LEN_BYTE_ARRAY` values to be
decoded directly into caller-provided buffers
([GH-50333](https://github.com/apache/arrow/issues/50333)).

Reading only the plaintext columns of a partially encrypted Parquet file with a
plaintext footer no longer fails with a decryption error ([GH-51361](https://github.com/apache/arrow/issues/51361)).
[GH-51349](https://github.com/apache/arrow/pull/51350) disables reading KMS URLs from file key material by default (`read_kms_url=false`). Applications relying on this behavior should
explicitly configure the KMS URL, or opt in with `read_kms_url=true` only if their KMS implementation validates the supplied URL.
Level histograms written to the Parquet size statistics could be incorrect for
inputs spanning multiple chunks; this has been fixed ([GH-50778](https://github.com/apache/arrow/issues/50778)).

APIs deprecated in version 23.0.0 and earlier have been removed ([GH-50750](https://github.com/apache/arrow/issues/50750)).

### Miscellaneous C++ changes

`ArrayBuilder` subclasses for binary data now raise a `CapacityError` instead of
silently truncating values of 2 GiB or more ([GH-51156](https://github.com/apache/arrow/issues/51156)).

Bitmap copy and inversion operations have been sped up, by up to 2x in some
cases ([GH-50784](https://github.com/apache/arrow/issues/50784)).

The `Datum` class has a new method `ComputeLogicalNullCount` ([GH-50338](https://github.com/apache/arrow/issues/50338)),
complementing the method added to `ChunkedArray` in the previous release.

## Python Notes

### Compatibility notes

* Python 3.15 is supported and wheels created [GH-48172](https://github.com/apache/arrow/issues/48172).
* Python 3.10 support dropped [GH-50410](https://github.com/apache/arrow/issues/50410).
* Support for pandas < 2.2.2 dropped [GH-48808](https://github.com/apache/arrow/issues/48808) and [GH-48473](https://github.com/apache/arrow/issues/48473).
* We now require numpy 2.x [GH-48473](https://github.com/apache/arrow/issues/48473).

### New features

* Conversion from numpy ` numpy.dtypes.StringDType` to Arrow `string` (also `large_string` or `string_view`) is added [GH-51652](https://github.com/apache/arrow/issues/51652).
* DLPack implementation now provides export capability for Arrow Arrays, Tensors [GH-39295](https://github.com/apache/arrow/issues/39295) and `FixedShapeTensorArray`/`FixedShapeTensorScalar` [GH-38868](https://github.com/apache/arrow/issues/38868) for consumers implementing DLPack protocol. Also the protocol version has been updated to use version 1.3 [GH-41670](https://github.com/apache/arrow/issues/41670).
* `record_batch_reader_source` Acero node (`RecordBatchReaderSourceNodeOptions`) is exposed [GH-50801](https://github.com/apache/arrow/issues/50801).
* `search_sorted` kernel for all primitive types and run-end encoded arrays is available [GH-49677](https://github.com/apache/arrow/issues/49677).
* `RecordBatchFileReader.count_rows()` binding is added [GH-49305](https://github.com/apache/arrow/issues/49305).
* `List`, `ListView`, `LargeList`, `LargeListView`, `Map`, `FixedSizeList` and `Struct` values are supported in the `run_end_encode` and the `run_end_decode` paths [GH-44183](https://github.com/apache/arrow/issues/44183).
* `eol` and `null_string` csv `WriteOptions` have been exposed [GH-34577](https://github.com/apache/arrow/issues/34577).

### Other improvements

* `.slice` methods accept Arrow integer scalars [GH-51145](https://github.com/apache/arrow/issues/51145).
* `arrow_to_pandas` `DateOffset` handling for nanoseconds/microseconds is simplified [GH-50464](https://github.com/apache/arrow/issues/50464).
* First step towards abi3 wheels support for pyarrow has been merged [GH-50431](https://github.com/apache/arrow/issues/50431).
* `is_nested` now uses C++ type traits [GH-40282](https://github.com/apache/arrow/issues/40282).

### Relevant bug fixes

* Converting `arrow.uuid arrays` and `table` columns to pandas now returns `uuid.UUID` objects instead of `bytes` [GH-50312](https://github.com/apache/arrow/issues/50312).
* Scalar arithmetic dunders now return `NotImplemented` instead of raising `TypeError` when the other operand is not a recognized Arrow/NumPy type [GH-49826](https://github.com/apache/arrow/issues/49826).
* Raise instead of crashing on unopened `MemoryMappedFile().resize()` [GH-51229](https://github.com/apache/arrow/issues/51229).
* Writer options are synced between `write_table` and `write_to_dataset`/`ParquetFileFormat.make_write_options(...)` [GH-51220](https://github.com/apache/arrow/issues/51220).
* `BufferReader.readinto()` segfaults on a read-only destination are fixed [GH-51044](https://github.com/apache/arrow/issues/51044).
* `FunctionOptions.deserialize()` segfaults on non-buffer arguments are fixed [GH-51041](https://github.com/apache/arrow/issues/51041).
* Correct type of `ParquetLogicalType` is now returned for Geometry/Geography [GH-50849](https://github.com/apache/arrow/issues/50849).
* `pa.types.is_nested()` now returns `True` for run-end encoded types [GH-50847](https://github.com/apache/arrow/issues/50847).
* The reference cycle between the C++ FlightServerBase and the Python object now breaks to avoid leaking the server [GH-50684](https://github.com/apache/arrow/issues/50684).
* Reference leak in `ConvertToSequenceAndInferSize` when an iterator raises on array conversion is fixed [GH-50591](https://github.com/apache/arrow/issues/50591).
* `pa.Table.from_struct_array` failure on empty array is fixed [GH-48344](https://github.com/apache/arrow/issues/48344).
* Invalid operator error message in `pyarrow.parquet` is fixed [GH-47369](https://github.com/apache/arrow/issues/47369).
* Preserving leading zeros in `read_csv` is now better documented [GH-46853](https://github.com/apache/arrow/issues/46853).
* `write_dataset` with csv file format ignoring delimiter is fixed [GH-39961](https://github.com/apache/arrow/issues/39961).
* `pyarrow.array` silently rewriting dictionary types to use signed integers for indexes is fixed [GH-37476](https://github.com/apache/arrow/issues/37476).
* Extension types with list-based storage cast segfault is fixed [GH-37004](https://github.com/apache/arrow/issues/37004).

## R Notes
- register_scalar_function() now errors if named fields in in_type do not match the corresponding
argument names of fun (after the initial context argument), instead of silently ignoring those names ([GH-37761](https://github.com/apache/arrow/pull/51324)).
### Breaking changes

- `read_feather()` and `write_feather()` are deprecated in favour of `read_ipc_file()` and `write_ipc_file()`, and `format = "feather"` in `open_dataset()` and `write_dataset()` is deprecated in favour of `format = "ipc"` ([GH-49237](https://github.com/apache/arrow/issues/49237)).
- The long-deprecated `.data.frame` argument to `map_batches()` has been removed, and the planned change to `pull()` returning a `ChunkedArray` by default has been dropped, so `pull()` no longer warns ([GH-51655](https://github.com/apache/arrow/issues/51655)).

### New features

- Azure Blob Storage is now supported via the new `AzureFileSystem` class and `az_container()` helper, analogous to `S3FileSystem` and `s3_bucket()` (@marberts, [GH-32123](https://github.com/apache/arrow/issues/32123)).

### Minor improvements and fixes

- A number of dplyr fixes: variables sharing a name with a function such as `date` now work in verbs ([GH-39688](https://github.com/apache/arrow/issues/39688)), `if_else()` works with a bare `NA` branch alongside dates ([GH-38358](https://github.com/apache/arrow/issues/38358)), and `summarise()` after `arrange()` no longer errors ([GH-45373](https://github.com/apache/arrow/issues/45373)).
- Factors and integer types inside list columns are now unified across the whole column when reading in multiple batches ([GH-50514](https://github.com/apache/arrow/issues/50514)), and Parquet `float16` columns now read correctly ([GH-50378](https://github.com/apache/arrow/issues/50378)).


## Ruby and C GLib Notes

Comment thread
raulcd marked this conversation as resolved.
- Flight RPC: Fixed GC related problems: [GH-50401](https://github.com/apache/arrow/pull/50401)
- Apache Parquet: Added support for buffered reader properties: [GH-51277](https://github.com/apache/arrow/pull/51277)

### Ruby

- red-arrow-format: Added support for building Apache Arrow data from Ruby objects.
- red-arrow-format: Added support for comparing arrays.
- red-arrow-format: Added support for comparing types.
- red-arrow-format: Added support for getting Ruby objects from Apache Arrow data.

### C GLib

No C GLib only notes.

## Java, JavaScript, Go, .NET, Swift and Rust Notes

The Java, JavaScript, Go, .NET, Swift and Rust projects have moved to separate
repositories outside the main Arrow [monorepo](https://github.com/apache/arrow).

- For notes on the latest release of the [Java
implementation](https://github.com/apache/arrow-java), see the latest [Arrow
Java changelog][7].
- For notes on the latest release of the [JavaScript
implementation](https://github.com/apache/arrow-js), see the latest [Arrow
JavaScript changelog][8].
- For notes on the latest release of the [Rust
implementation](https://github.com/apache/arrow-rs) see the latest [Arrow Rust
changelog][5].
- For notes on the latest release of the [Go
implementation](https://github.com/apache/arrow-go), see the latest [Arrow Go
changelog][6].
- For notes on the latest release of the [.NET
implementation](https://github.com/apache/arrow-dotnet), see the latest [Arrow .NET changelog][9].
- For notes on the latest release of the [Swift implementation](https://github.com/apache/arrow-swift), see the latest [Arrow Swift changelog][10].

[1]: https://github.com/apache/arrow/milestone/75?closed=1
[2]: {{ site.baseurl }}/release/26.0.0.html#contributors
[3]: {{ site.baseurl }}/release/26.0.0.html#changelog
[4]: {{ site.baseurl }}/docs/r/news/
[5]: <https://github.com/apache/arrow-rs/blob/main/CHANGELOG.md>
[6]: <https://github.com/apache/arrow-go/releases>
[7]: <https://github.com/apache/arrow-java/releases>
[8]: <https://github.com/apache/arrow-js/releases>
[9]: <https://github.com/apache/arrow-dotnet/releases>
[10]: <https://github.com/apache/arrow-swift/releases>
Loading