unstale

pypi / jax

jax

What changed in jax 0.11 to 0.12, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-30.

30 breaking2 security4 deprecations30 new APIs and options6 performance4 behavior and defaults3 tooling56 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli on npm

jax 0.1269 changes

Breaking changes 17

  • Removed; use jax.custom_vjp.defremat instead.

    0.12.0release notes

  • Under jax.vmap, shared primal outputs that do not depend on batched inputs now raise an error instead of potentially counting their cotangent once per example; generic_batching can resolve the case.

    0.12.0release notes

  • Now clears the caller's concrete and abstract mesh when invoking host callbacks, matching jax.debug.callback.

    0.12.0release notes

  • Now returns tuples of arrays rather than lists, matching NumPy 2.0+.

    0.12.0release notes

  • Now returns tuples of arrays rather than lists, matching NumPy 2.0+.

    0.12.0release notes

  • Now returns tuples of arrays rather than lists, matching NumPy 2.0+.

    0.12.0release notes

  • Scalar constructors now have proper type annotations instead of Any, potentially producing typecheck errors where they were misused.

    0.12.0release notes

  • Now bit-exact for normal floating-point numbers using bitwise operations; subnormal inputs and underflowing outputs are flushed to signed zero.

    0.12.0release notes

  • Improved numerical accuracy and derivatives using power-of-two scaling and a custom JVP rule; the derivative at (0, 0) now returns NaN instead of ±0.5.

    0.12.0release notes

  • Scalar constructors now have proper type annotations instead of Any, potentially producing typecheck errors where they were misused.

    0.12.0release notes

  • Now bit-exact for normal floating-point numbers using bitwise operations; subnormal inputs and underflowing outputs are flushed to signed zero.

    0.12.0release notes

  • Now raises AttributeError when unknown attributes are assigned.

    0.12.0release notes

  • The shape argument now means batch shape, and results have shape (*shape, p.shape[-1]); callers passing the full output shape should drop its last entry.

    0.12.0release notes

  • Updated the minimum pinned libtpu version to 0.0.50.

    0.12.0release notes

  • Dropped support for NumPy 2.1; JAX now requires NumPy 2.2 or newer.

    0.12.0release notes

  • jax.checkpoint, jax.custom_vjp, and jax.shard_map now error if the same Ref is passed more than once or both closed over and passed as an argument.

    0.12.0release notes

  • JAX and jaxlib now require an Intel Haswell or newer CPU with AVX2 and FMA; older AVX-only CPUs are unsupported, though source builds remain possible.

    0.12.0release notes

Security 1

  • Now defaults to hostname localhost, avoiding inadvertently opening a port to the world.

    0.12.0release notes

Deprecations 2

New APIs and options 20

  • The new strategy argument chooses whether the operation lowers to gather, dynamic_slice, or slice.

    0.12.0release notes

  • Set this environment variable to the address of the IFRT Proxy server when using the proxy backend.

    0.12.0release notes

  • Set in jax.distributed.initialize for oneAPI GPU support.

    0.12.0release notes

  • Set to proxy to use the newly registered backend that connects to an IFRT Proxy server.

    0.12.0release notes

  • Implemented reverse iteration using chunked slicing, matching __iter__ for faster eager-mode reverse iteration.

    0.12.0release notes

  • Added a remat option for writing jax.custom_vjp.defremat rules with closures.

    0.12.0release notes

  • Customize how a custom VJP function is rematerialized when differentiated under jax.remat; it requires the jax_custom_vjp3 and jax_remat3 implementations.

    0.12.0release notes

  • Added an option for batching under jax.vmap when a primal output is shared across the batch.

    0.12.0release notes

  • Added a way to query the default device layout for an array.

    0.12.0release notes

  • Added an argument to place optimization barriers on the first input and/or last output of the scope.

    0.12.0release notes

  • Added tools to author, inspect, splice, and execute XLA:GPU ThunkExecutor programs directly from Python.

    0.12.0release notes

  • Added support for accuracy=jax.lax.AccuracyMode.HIGHEST, with improved worst-case accuracy and accurate first- and higher-order derivatives.

    0.12.0release notes

  • Added polynomial evaluation with a primitive that is faster and uses less memory when computing gradients.

    0.12.0release notes

  • Accepts mxfp4, using E2M1 elements with one E8M0 scale per block of 32; quantization runs natively on AMD gfx950 GPUs and uses a dequantize-and-dot fallback elsewhere.

    0.12.0release notes

  • Added batch_size, defaulting to 16, to control the batched approach now used by default for many-key sorts and avoid long compile times.

    0.12.0release notes

  • Added profile data export for session- and context-manager-based profiling.

    0.12.0release notes

  • Added session-based profiling.

    0.12.0release notes

  • Introduced as an Array type alias; starting in JAX 0.13.0, it will be the return type for key, split, and fold_in.

    0.12.0release notes

  • Added the inverse complementary error function.

    0.12.0release notes

  • Added a context manager that raises an error at trace time in explicit sharding mode if an operation or reshard introduces a collective across a specified mesh axis.

    0.12.0release notes

Performance 3

  • Now lowers via a single-pass jax.lax.reduce.

    0.12.0release notes

  • Uses an unstable sort when weights=None, avoiding a companion index sort.

    0.12.0release notes

  • Uses an unstable sort when weights=None, avoiding a companion index sort.

    0.12.0release notes

Behavior and default changes 1

  • Sets jax_oneapi_visible_devices in oneAPI GPU support.

    0.12.0release notes

Tooling 2

  • Now annotated as returning Iterator[Self] rather than Any.

    0.12.0release notes

  • Now annotated as returning Iterator[Self] rather than Any.

    0.12.0release notes

Fixes and other changes 23

  • Fixed a regression where cached host-transfer CPU buffers prevented buffer donation.

    0.12.0release notes

  • Fixed indexing and iteration over fully replicated multi-device arrays.

    0.12.0release notes

  • A failing ordered io_callback no longer permanently poisons effect tokens.

    0.12.0release notes

  • Complex absolute value has improved numerical accuracy by lowering through power-of-two scaled hypot.

    0.12.0release notes

  • Improved precision of fallback expansions near zero under flush-to-zero mode.

    0.12.0release notes

  • Fixed numerical overflow in gradients for large inputs.

    0.12.0release notes

  • Improved CPU accuracy for float32 and float64 and tightened float32 accuracy on specified TPU generations.

    0.12.0release notes

  • Tightened float32 accuracy on TPU v5p, v6e, and 7x with libtpu >= 0.0.50.

    0.12.0release notes

  • Fixed incorrect results for signed integer minimum values such as INT_MIN.

    0.12.0release notes

  • Preserves FP8/FP4 quantization when XLA expands scaled matmul into dequantize-and-dot and computes MX block scales in float32 regardless of input dtype.

    0.12.0release notes

  • Complex absolute value has improved numerical accuracy by lowering through power-of-two scaled hypot.

    0.12.0release notes

  • Fixed incorrect results for signed integer minimum values such as INT_MIN.

    0.12.0release notes

  • Fixed the gradient at x = 0.0, which previously returned 1.0 instead of 2**n.

    0.12.0release notes

  • Fixed incorrect results for signed integer minimum values such as INT_MIN.

    0.12.0release notes

  • Improved numerical accuracy across floating-point types.

    0.12.0release notes

  • Now clears the caller's concrete and abstract mesh when invoking host callbacks, matching jax.debug.callback.

    0.12.0release notes

  • Fixed parameter broadcasting.

    0.12.0release notes

  • Now accepts batched inputs of shape (..., M, N), as documented.

    0.12.0release notes

  • Fixed the Hessian when a == b.

    0.12.0release notes

  • Reimplemented erfcx, improving accuracy and derivatives as part of the special-function accuracy changes.

    0.12.0release notes

  • Numerical accuracy of ndtri and its derivatives improved using minimax polynomial approximations and a custom JVP rule.

    0.12.0release notes

  • Fixed vmap of jax.lax.scan closing over a Ref batched on a non-leading axis.

    0.12.0release notes

  • Fixed out-of-bounds slice validation when start = 0.

    0.12.0release notes

jax 0.1166 changes

Breaking changes 13

  • JAX Bazel builds now use Bzlmod instead of WORKSPACE.

    0.11.2release notes

  • The minimum CuDNN version required for CUDA 12 is now v9.10.2.

    0.11.2release notes

  • Removed the deprecated API; use explicit sharding mode instead.

    0.11.2release notes

  • inline=True now corresponds to jax.Inline.JAX_LATE instead of jax.Inline.JAX_EARLY.

    0.11.2release notes

  • An input empty along the reduction axis now raises ValueError instead of an internal gather error.

    0.11.2release notes

  • When dtype is unspecified, the returned array now uses the default float dtype rather than always float32.

    0.11.2release notes

  • The flag has been removed in favor of the EffortLevel enum.

    0.11.1release notes

  • Deserialization of Exported modules from before January 15th, 2026 is no longer supported; NamedSharding is now the only supported sharding serialization.

    0.11.1release notes

  • Now returns a tuple rather than a list, aligning with NumPy>2.0 and the Array API specification.

    0.11.1release notes

  • Now returns a tuple rather than a list, aligning with NumPy>2.0 and the Array API specification.

    0.11.1release notes

  • Now returns a tuple rather than a list, aligning with NumPy>2.0 and the Array API specification.

    0.11.1release notes

  • The default is now always True; None is no longer a valid value.

    0.11.1release notes

  • The flag has been removed in favor of the EffortLevel enum.

    0.11.1release notes

Security 1

  • Added mutual TLS coordination-service configuration arguments and corresponding environment variables.

    0.11.2release notes

Deprecations 2

  • Accessing this field now raises a warning; use in_shardings_jax instead.

    0.11.1release notes

  • Accessing this field now raises a warning; use out_shardings_jax instead.

    0.11.1release notes

New APIs and options 10

  • jaxlib wheels now include C++ FFI extension headers to support out-of-tree plugins.

    0.11.2release notes

  • Added the exclude_argnames argument.

    0.11.2release notes

  • Added an API for querying conservative bounds on symbolic dimension expressions.

    0.11.2release notes

  • Added log2 as a first-class primitive; jax.numpy.log2 now lowers through it.

    0.11.2release notes

  • Added the out_sharding parameter.

    0.11.2release notes

  • Added an API that returns both the minimum and maximum of an array, matching NumPy 2.3+.

    0.11.2release notes

  • Added oneMKL LAPACK kernels for QR, LU, symmetric/Hermitian eigenvalue, SVD, and hybrid solvers on oneAPI GPUs.

    0.11.2release notes

  • JAX now reads this environment variable in GKE TPU clusters.

    0.11.2release notes

  • Temporarily bypasses the error check when deserializing JAX exports older than the backwards compatibility window.

    0.11.1release notes

  • Adds jax.numpy.top_k, implementing numpy.top_k.

    0.11.1release notes

Performance 3

  • Scan-based lowering was re-enabled on GPU, improving performance.

    0.11.2release notes

  • GPU multidimensional inverse real FFTs again lower to a single C2R transform; results are unchanged and typical sizes are about 1.4x faster.

    0.11.2release notes

  • Large Mesh construction avoids redundant device array allocations and copies.

    0.11.2release notes

Behavior and default changes 3

  • Cluster detection now supports Open MPI 5.

    0.11.2release notes

  • The p parameter now accepts RealArray rather than only float, allowing array-valued shape parameters.

    0.11.2release notes

  • cuDNN fused attention batching rules now support operands without the vmap axis, including shared bias or mask.

    0.11.1release notes

Tooling 1

  • JAX now uses Bazel 8.7.0 to build from source.

    0.11.2release notes

Fixes and other changes 33

  • Improved thread safety across JAX and jaxlib for free-threaded Python 3.13t, 3.14t, and 3.15t.

    0.11.2release notes

  • JAX pytrees now support frozendict on Python 3.15.

    0.11.2release notes

  • Fixed tangents when auxiliary values are integer-typed.

    0.11.2release notes

  • Fixed color cycling.

    0.11.2release notes

  • Error code assignment is now deterministic.

    0.11.2release notes

  • Fixed symbolic product bounds when even-powered factor bounds cross zero or zero factors are paired with infinite bounds.

    0.11.2release notes

  • Fixed first-, second-, and higher-order autodiff gradients at 0.0.

    0.11.2release notes

  • Adjusted the JVP rule so it does not depend on bitwise equivalence between forward- and backward-pass results.

    0.11.2release notes

  • Fixed a potential division-by-zero error for zero-size inputs.

    0.11.2release notes

  • Fixed numerical overflow in gradients for large inputs.

    0.11.2release notes

  • Fixed a crash on empty arrays.

    0.11.2release notes

  • With size=0, now returns an empty array of the natural result dtype instead of raising ValueError.

    0.11.2release notes

  • For singular matrices with p=None or 2, now returns infinity instead of NaN, matching NumPy and the other norms.

    0.11.2release notes

  • Fixed gradients that produced NaN or incorrect values for large eigenvalues.

    0.11.2release notes

  • Numerical accuracy improved by pre-computing the 1 / log(2) constant factor.

    0.11.2release notes

  • With size=0 on non-empty inputs, now returns an empty array instead of raising IndexError.

    0.11.2release notes

  • Now uses a Taylor series near zero, giving accurate derivatives of all orders.

    0.11.2release notes

  • With axis specified, empty-axis arrays now have NumPy's output shape instead of a fabricated phantom slice for fully empty inputs.

    0.11.2release notes

  • The argument signature now accepts bool | Sequence[bool], matching jax.checkpoint.

    0.11.2release notes

  • Fixed gradients leaking into the unused triangle when symmetrize_input=False.

    0.11.2release notes

  • Fixed state discharge accumulation on indexed ReshapeTransform views.

    0.11.2release notes

  • Worked around a rocFFT twiddle cache bug in multidimensional real FFTs.

    0.11.2release notes

  • Setting this to False adds rematerialization to disabled XLA passes instead of overwriting the set, preserving passes disabled through XLA_FLAGS.

    0.11.1release notes

  • Errors for non-scalar function outputs now suggest reducing the output to a scalar, using jax.jacobian, or reshaping size-1 outputs.

    0.11.1release notes

  • Errors for non-static or traced slice indices now suggest jax.lax.dynamic_slice, jax.lax.dynamic_update_slice, or jax.ds, and show tracer provenance.

    0.11.1release notes

  • Fixes propagation of singleton sharded dimensions when reshaping arrays with sharding constraints.

    0.11.1release notes

  • Abstract evaluation now checks .mat equivalency only when the abstract value is a ShapedArray.

    0.11.1release notes

  • The cuDNN fused attention backward pass no longer computes a bias gradient when the only attention bias comes from a boolean mask; explicit bias and non-boolean mask gradients are unchanged.

    0.11.1release notes

  • Uses closed-form LU decomposition with row pivoting for 2x2 and 3x3 matrices instead of polynomial expansions to avoid numerical instability and catastrophic cancellation.

    0.11.1release notes

  • Uses closed-form LU decomposition with row pivoting for 2x2 and 3x3 matrices instead of polynomial expansions to avoid numerical instability and catastrophic cancellation.

    0.11.1release notes

  • Fixed for namedtuple instances.

    0.11.1release notes

  • Errors for non-scalar function outputs now suggest reducing the output to a scalar, using jax.jacobian, or reshaping size-1 outputs.

    0.11.1release notes

  • Vmapping fp8 cuDNN fused attention now works; amax outputs are whole-batch statistics without the vmap axis, while vmapping scale/descale operands raises NotImplementedError.

    0.11.1release notes