Dask 2026.6.0 - Partition Merge Bug and Map Alignment Fixes

Dask 2026.6.0 shipped on June 11, 2026 as a stable release. The headline fix for data pipelines is a DataFrame.merge bug that dropped rows when the graph had exactly 128 or 129 partitions, a failure mode that is easy to miss until you audit output counts.

The full release notes and downloads are on the GitHub release page.

DataFrame.merge at 128 and 129 partitions

Pull request #12430 repairs a silent data loss path in Dataframe.merge. When partition count hit 128 or 129, merged results could omit rows without raising an error. That partition band is not exotic in production: repartition steps, hash shuffles, and default chunk sizing routinely land clusters in that range.

If your ETL jobs compare row counts after joins, run again on any merge heavy workloads that passed checks only because the bug never triggered at your prior partition count. The failure was deterministic at those counts, not a race or flaky scheduler event.

Series.map and quantile corrections

Series.map between two Series objects returned wrong values when inputs were not co aligned (#12432). Map is a common path for label driven transforms and small dictionary style lookups across partitioned frames. Misaligned indices are normal after filters, reindexes, or partial writes from upstream sources.

The quantile and nanquantile work in #12380 addresses edge cases in array reductions used for profiling, thresholding, and outlier gates. Separately, #12370 now raises NotImplementedError for da.quantile with weights on NumPy versions below 2.0 instead of returning a misleading result.

Array, storage, and runtime compatibility

Cholesky decomposition now accepts complex dtypes (#12416), which matters for signal processing and certain linear algebra pipelines that store complex valued blocks.

Empty array storage with zarr 3.2.0 is fixed in #12366. Teams writing partitioned array outputs to zarr should see fewer edge case failures on zero length chunks.

Free threading builds enable the msgpack C extension (#12439), reducing serialization overhead when running under Python 3.14t style no GIL configurations. CI also expanded to Linux ARM (#12408) and intermediate NumPy and pandas versions (#12372, #12445), with PySpark tests resurrected (#12410).

Pandas 3.1 and dependency shifts

DataFrame.drop now warns that the inplace keyword is deprecated under pandas 3.1 (#12447). Plan to remove inplace drops from Dask pandas code paths before upgrading the pandas pin.

The project removed numexpr (#12384) and raised the minimum pyyaml version to 5.4.1 (#12382). Optional import errors now re raise ModuleNotFoundError instead of wrapping as ImportError (#12381), which should make missing dependency failures easier to diagnose in container images.

A Jinja2 autoescape change for HTML representations landed in #12423 and was reverted in #12451. Operators rendering Dask HTML reprs in shared dashboards should not assume XSS hardening from this tag.

Upgrade notes

This is not a prerelease. No broad API break is called out, but partition sensitive merge workloads deserve a targeted regression pass. Review pandas nightly compatibility fixes for add_prefix, add_suffix, and describe if you track pre release pandas builds. The complete bullet list is on the 2026.6.0 release page.

The changelog carries the full commit list. Most remaining items are CI migration to Pixi, test stabilization, and packaging workflow additions including a PyPI release workflow (#12452).

Where to get it