Apache Arrow 25.0.0 (10 Jul 2026) plus patch 25.0.1 (10 Aug 2026). Bloom filters fold to the configured FPP, hypot, per-key NULLS FIRST/LAST, ListView in Parquet. 25.0.1: to_pylist without per-element Scalars, SVE unpack fix, Feather deprecation narrowed to V1. Three things to try tonight. Not investment advice.
Apache Arrow 25.0.0 landed 10 July 2026 (release post): 222 issues, 268 commits, 66 contributors. Patch 25.0.1 followed on 10 August 2026 (25.0.1 post): 9 issues, 10 commits. This note is what a laptop pyarrow user should feel, plus three things to try tonight. It is not a Flight SQL ODBC install, not an R-package recap, and not investment advice.
The only course CTA is Introduction to Python Programming. Related Hub: Polars 1.44 Iceberg / Parquet.
From the PMC notes:
Parquet bloom filters fold to the configured false-positive rate from the actual cardinality (GH-50008), instead of staying sized for a conservative estimate. Vectorized bloom (GH-50030). ListView read/write in Parquet (GH-50160). Extension types in pyarrow.parquet.read_schema (GH-48254). Consistent default pre_buffer (GH-49923).
Compute. hypot Euclidean norm without naive overflow (GH-50198 / PyArrow GH-50197). Comparisons on StringView / BinaryView (GH-49964). Sort / rank / select-k per-key null placement — SQL ORDER BY i NULLS FIRST, j NULLS LAST (GH-46926). Rank distinguishes NaN from null (GH-45193). count on run-end-encoded logical nulls (GH-49908).
Tables / CSV / files. Table.ToTensor (GH-41870 / Python GH-40062). CSV default_column_type disables inference for unlisted columns (GH-47663 / Python GH-22232). pa.OSFile accepts an open fd int (GH-49751). Parquet encryption helpers create_encryption_properties / create_decryption_properties (GH-47435). C Data Interface: variadic buffers may be null (GH-50255). IPC reader is stricter. Feather reader/writer deprecated in favour of Arrow IPC (GH-49232) — see 25.0.1 for the Python warning scope.
25.0.1 (pin this). to_pylist converts without per-element Scalars (GH-50326) — Spark Arrow UDF path. Silent wrong doubles on aarch64 SVE unpack in Parquet (GH-50605 / GH-50503). mimalloc segfault on macOS / non-main thread (GH-50471, GH-50428). Feather deprecation narrowed to legacy V1; V2 no longer warns (GH-50808).
Debian bookworm packages dropped. ARM64 SVE dynamic dispatch in C++.
python -c "import pyarrow as pa; print(pa.__version__)"
# pip install -U "pyarrow==25.0.1"
1. hypot (no files).
import pyarrow as pa
import pyarrow.compute as pc
x = pa.array([3.0, 5.0, None])
y = pa.array([4.0, 12.0, 0.0])
print(pc.hypot(x, y))
2. Sort a tiny table (then read help(pc.SortOptions) for per-key null_placement names in your build):
import pyarrow as pa
import pyarrow.compute as pc
t = pa.table({"i": [1, None, 1, 2], "j": [None, 0, 3, 1]})
print(pc.sort_indices(t, sort_keys=[("i", "ascending"), ("j", "ascending")]))
3. Round-trip Parquet:
import pyarrow as pa
import pyarrow.parquet as pq
from pathlib import Path
p = Path("/tmp/arrow25-demo.parquet")
t = pa.table({"x": [1, 2, 3], "s": ["a", "b", "c"]})
pq.write_table(t, p)
print(pq.read_schema(p))
print(pq.read_table(p).to_pylist())
If bloom-filter writer kwargs differ, use the 25.0 writer properties — do not invent flag names. Stop after one of three.
If Python packaging is the blocker, Introduction to Python Programming, then pip install 'pyarrow==25.0.1' and print pyarrow.__version__.