diff --git a/_posts/2026-10-08-26.0.0-release.md b/_posts/2026-10-08-26.0.0-release.md new file mode 100644 index 00000000000..8d1ea38a79a --- /dev/null +++ b/_posts/2026-10-08-26.0.0-release.md @@ -0,0 +1,236 @@ +--- +layout: post +title: "Apache Arrow 26.0.0 Release" +date: "2026-10-08 00:00:00" +author: pmc +categories: [release] +--- + + +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 + +- 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]: +[6]: +[7]: +[8]: +[9]: +[10]: