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

New features

  • Conversion from numpy numpy.dtypes.StringDType to Arrow string (also large_string or string_view) is added GH-51652.
  • DLPack implementation now provides export capability for Arrow Arrays, Tensors GH-39295 and FixedShapeTensorArray/FixedShapeTensorScalar GH-38868 for consumers implementing DLPack protocol. Also the protocol version has been updated to use version 1.3 GH-41670.
  • record_batch_reader_source Acero node (RecordBatchReaderSourceNodeOptions) is exposed GH-50801.
  • search_sorted kernel 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, FixedSizeList and Struct values are supported in the run_end_encode and the run_end_decode paths GH-44183.
  • eol and null_string csv WriteOptions have been exposed GH-34577.

Other improvements

  • .slice methods accept Arrow integer scalars GH-51145.
  • arrow_to_pandas DateOffset handling for nanoseconds/microseconds is simplified GH-50464.
  • First step towards abi3 wheels support for pyarrow has been merged GH-50431.
  • is_nested now uses C++ type traits GH-40282.

Relevant bug fixes

  • Converting arrow.uuid arrays and table columns to pandas now returns uuid.UUID objects instead of bytes GH-50312.
  • Scalar arithmetic dunders now return NotImplemented instead of raising TypeError when 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_table and write_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 ParquetLogicalType is now returned for Geometry/Geography GH-50849.
  • pa.types.is_nested() now returns True for 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 ConvertToSequenceAndInferSize when an iterator raises on array conversion is fixed GH-50591.
  • pa.Table.from_struct_array failure on empty array is fixed GH-48344.
  • Invalid operator error message in pyarrow.parquet is fixed GH-47369.
  • Preserving leading zeros in read_csv is now better documented GH-46853.
  • write_dataset with csv file format ignoring delimiter is fixed GH-39961.
  • pyarrow.array silently 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() 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).
  • 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).

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).

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), if_else() works with a bare NA branch alongside dates (GH-38358), and summarise() after arrange() 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 float16 columns 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.