Apache Arrow 26.0.0 Release
Published
08 Oct 2026
By
The Apache Arrow PMC (pmc)
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 on 403 distinct commits from 108 distinct contributors. See the Install Page 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.
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).
Arrow Flight RPC Notes
Work on the Flight SQL ODBC driver continued. RPM packages for the driver are now built (GH-47877). On Windows, the driver is now statically linked (GH-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 for parsing and to a new
JsonWriter for serialization (GH-50566, GH-50567 and
follow-ups).
The Feather reader and writer V1 APIs have been deprecated in favour of the Arrow IPC APIs (GH-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), and ignore_extra_columns drops extra fields from rows that have
more columns than expected (GH-50967).
Compute
New remainder and modulo compute functions have been added (GH-46901).
The temporal rounding functions (floor_temporal, ceil_temporal and
round_temporal) now accept duration inputs (GH-50395).
Hash aggregations now support string_view and binary_view grouping keys
(GH-50223), and the unique, value_counts and dictionary_encode functions
now support float16 inputs (GH-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). 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). 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).
A new low-level dense decoding API allows FIXED_LEN_BYTE_ARRAY values to be
decoded directly into caller-provided buffers
(GH-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).
GH-51349 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).
APIs deprecated in version 23.0.0 and earlier have been removed (GH-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).
Bitmap copy and inversion operations have been sped up, by up to 2x in some cases (GH-50784).
The Datum class has a new method ComputeLogicalNullCount (GH-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.
- Python 3.10 support dropped GH-50410.
- Support for pandas < 2.2.2 dropped GH-48808 and GH-48473.
- We now require numpy 2.x GH-48473.
New features
- Conversion from numpy
numpy.dtypes.StringDTypeto Arrowstring(alsolarge_stringorstring_view) is added GH-51652. - DLPack implementation now provides export capability for Arrow Arrays, Tensors GH-39295 and
FixedShapeTensorArray/FixedShapeTensorScalarGH-38868 for consumers implementing DLPack protocol. Also the protocol version has been updated to use version 1.3 GH-41670. -
record_batch_reader_sourceAcero node (RecordBatchReaderSourceNodeOptions) is exposed GH-50801. -
search_sortedkernel for all primitive types and run-end encoded arrays is available GH-49677. -
RecordBatchFileReader.count_rows()binding is added GH-49305. -
List,ListView,LargeList,LargeListView,Map,FixedSizeListandStructvalues are supported in therun_end_encodeand therun_end_decodepaths GH-44183. -
eolandnull_stringcsvWriteOptionshave been exposed GH-34577.
Other improvements
-
.slicemethods accept Arrow integer scalars GH-51145. -
arrow_to_pandasDateOffsethandling for nanoseconds/microseconds is simplified GH-50464. - First step towards abi3 wheels support for pyarrow has been merged GH-50431.
-
is_nestednow uses C++ type traits GH-40282.
Relevant bug fixes
- Converting
arrow.uuid arraysandtablecolumns to pandas now returnsuuid.UUIDobjects instead ofbytesGH-50312. - Scalar arithmetic dunders now return
NotImplementedinstead of raisingTypeErrorwhen the other operand is not a recognized Arrow/NumPy type GH-49826. - Raise instead of crashing on unopened
MemoryMappedFile().resize()GH-51229. - Writer options are synced between
write_tableandwrite_to_dataset/ParquetFileFormat.make_write_options(...)GH-51220. -
BufferReader.readinto()segfaults on a read-only destination are fixed GH-51044. -
FunctionOptions.deserialize()segfaults on non-buffer arguments are fixed GH-51041. - Correct type of
ParquetLogicalTypeis now returned for Geometry/Geography GH-50849. -
pa.types.is_nested()now returnsTruefor run-end encoded types GH-50847. - The reference cycle between the C++ FlightServerBase and the Python object now breaks to avoid leaking the server GH-50684.
- Reference leak in
ConvertToSequenceAndInferSizewhen an iterator raises on array conversion is fixed GH-50591. -
pa.Table.from_struct_arrayfailure on empty array is fixed GH-48344. - Invalid operator error message in
pyarrow.parquetis fixed GH-47369. - Preserving leading zeros in
read_csvis now better documented GH-46853. -
write_datasetwith csv file format ignoring delimiter is fixed GH-39961. -
pyarrow.arraysilently rewriting dictionary types to use signed integers for indexes is fixed GH-37476. - Extension types with list-based storage cast segfault is fixed GH-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).
Breaking changes
-
read_feather()andwrite_feather()are deprecated in favour ofread_ipc_file()andwrite_ipc_file(), andformat = "feather"inopen_dataset()andwrite_dataset()is deprecated in favour offormat = "ipc"(GH-49237). - The long-deprecated
.data.frameargument tomap_batches()has been removed, and the planned change topull()returning aChunkedArrayby default has been dropped, sopull()no longer warns (GH-51655).
New features
- Azure Blob Storage is now supported via the new
AzureFileSystemclass andaz_container()helper, analogous toS3FileSystemands3_bucket()(@marberts, GH-32123).
Minor improvements and fixes
- A number of dplyr fixes: variables sharing a name with a function such as
datenow work in verbs (GH-39688),if_else()works with a bareNAbranch alongside dates (GH-38358), andsummarise()afterarrange()no longer errors (GH-45373). - Factors and integer types inside list columns are now unified across the whole column when reading in multiple batches (GH-50514), and Parquet
float16columns now read correctly (GH-50378).
Ruby and C GLib Notes
- Flight RPC: Fixed GC related problems: GH-50401
- Apache Parquet: Added support for buffered reader properties: GH-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.
- For notes on the latest release of the Java implementation, see the latest Arrow Java changelog.
- For notes on the latest release of the JavaScript implementation, see the latest Arrow JavaScript changelog.
- For notes on the latest release of the Rust implementation see the latest Arrow Rust changelog.
- For notes on the latest release of the Go implementation, see the latest Arrow Go changelog.
- For notes on the latest release of the .NET implementation, see the latest Arrow .NET changelog.
- For notes on the latest release of the Swift implementation, see the latest Arrow Swift changelog.