$ the-wire · showcase
JAX adds frozendict pytrees for Python 3.15, log2 primitives
By RepoJournal · Filed · About Google
JAX prepares for Python 3.15 by treating built-in frozendict as a pytree container, and adds log2 as a first-class primitive.
JAX now supports Python 3.15's built-in `frozendict` as a pytree container, matching `dict` behavior: keys sorted as auxiliary data, values flattened as children [1]. This means code using `frozendict` with JAX transformations like `jax.tree.map` or `jax.jit` will work without custom pytree registrations. It fixes issue #40517.
`jax.lax.log2` is now a first-class primitive alongside `exp2`, with `jax.numpy.log2` lowering directly through it [2]. This change adds `log2_p` and `exp2_p` to transformation rules and docs, enabling more direct manipulation and lowering.
For the OneAPI GPU backend, new solver kernels add LU decomposition, real symmetric and complex Hermitian eigen-decomposition, and QR-based singular value decomposition [3]. Jacobi and Polar SVD variants are marked unsupported.
A deprecated `pltpu.HOST` was removed from `[pallas:mosaic]` [4], continuing the deprecation cycle.
Action items
- → If you target Python 3.15, plan to adopt frozendict with JAX pytrees jax-ml/jax [plan]
- → Replace any uses of the deprecated pltpu.HOST in Pallas Mosaic code google/jax [immediate]
References
- [1] Add frozendict support to pytree for Python 3.15 (PEP 814). ↗ google/jax
- [2] Add `jax.lax.log2` and primitive `jax.lax.log2_p`. ↗ google/jax
- [3] [OneAPI GPU] Add OneAPI Solver getrf, syevd, heevd, and gesvd Kernels ↗ google/jax
- [4] [pallas:mosaic] Removed the previously deprecated `pltpu.HOST` ↗ google/jax