v0.11.0
JAX v0.11.0
Added 4
- Add hijax API documentation and helpers in jax.experimental.hijax for deriving VJPHiPrimitive autodiff rules including linearize_from_jvp, apply_derived_linearization, vjp_fwd_from_jvp, transpose_jvp, vjp_fwd_from_lin, transpose_linearized, and jvp_from_lin
- Add jax.custom_remat to the top-level jax namespace for per-function control of rematerialization under the new jax_remat3 implementation
- Expose SaveOnlyTheseNames, SaveAnyNamesButThese, and SaveAndOffloadOnlyTheseNames policy classes in jax.checkpoint_policies
- Add jax.Inline enum for specifying inlining policies to jax.jit
Changed 2
- Convert jax.checkpoint_policies from a namespace object to a submodule, enabling from jax.checkpoint_policies import ... syntax
- Change jax.numpy.empty and jax.numpy.empty_like to produce uninitialized arrays instead of zero-initialized arrays
Removed 7
- Remove deprecated jax.cloud_tpu_init module
- Drop support for Python 3.11
- Drop support for NumPy 2.0
- Drop support for SciPy 1.14
- Drop support for Python 3.13 free-threaded build
- Remove previously-deprecated APIs from jax.core including CallPrimitive, DebugInfo, DropVar, Effect, Effects, InconclusiveDimensionOperation, JaxprTypeError, abstract_token, check_jaxpr, concrete_or_error, find_top_trace, gensym, get_opaque_trace_state, is_concrete, is_constant_dim, is_constant_shape, jaxprs_in_params, new_jaxpr_eqn, no_effects, nonempty_axis_env_DO_NOT_USE, primal_dtype_to_tangent_dtype, unsafe_am_i_under_a_jit_DO_NOT_USE, unsafe_am_i_under_a_vmap_DO_NOT_USE, unsafe_get_axis_names_DO_NOT_USE, valid_jaxtype, JaxprPpContext, JaxprPpSettings, OutputType, aval_mapping_handlers, call, concretization_function_error, custom_typechecks, literalable_types, no_axis_name, and trace_ctx
- Remove previously-deprecated APIs from jax.interpreters.pxla including Index, MeshAxisName, MeshExecutable, global_aval_to_result_handler, global_result_handlers, are_hlo_shardings_equal, is_hlo_sharding_replicated, ArrayMapping, _UNSPECIFIED, array_mapping_to_axis_resources, and op_sharding_to_indices
Deprecated 1
- Deprecate passing 2-dimensional arrays or mixed 2D and 3D arrays to jax.numpy.cross, to be removed in JAX 0.12.0
-
New features
- Added a doc on defining custom derivative rules with the experimental
hijax API (
hijax-custom-derivatives), along withjax.experimental.hijaxhelpers for derivingVJPHiPrimitiveautodiff rules from ajvporlinrule:linearize_from_jvpwithapply_derived_linearization,vjp_fwd_from_jvpwithtranspose_jvp,vjp_fwd_from_linwithtranspose_linearized, andjvp_from_lin. - Added
jax.custom_rematto the top-leveljaxnamespace, for per-function control of rematerialization under the newjax_remat3implementation. jax.checkpoint_policiesis now a submodule rather than a namespace object (sofrom jax.checkpoint_policies import ...now works; attribute access is unchanged), and it additionally exposes the name-based policy classesSaveOnlyTheseNames,SaveAnyNamesButThese, andSaveAndOffloadOnlyTheseNames.- Added
jax.Inlineenum for specify inlining policies tojax.jit.
- Added a doc on defining custom derivative rules with the experimental
hijax API (
-
Breaking changes
- The deprecated module j
ax.cloud_tpu_initwas removed. This did nothing and references to it can be safely removed. - Support for Python 3.11, NumPy 2.0, and SciPy 1.14 has been dropped, per the deprecation policy.
- Support for Python 3.13 free-threaded (
3.13t) has been dropped. Python 3.13 free-threaded was an experimental build needed to bootstrap free threading support. Now that Python 3.14t is stable, it is time to drop the experimental build. Other parts of the Python ecosystem (e.g.cibuildwheel,scipy) are making similar moves. jax.numpy.emptyandjax.numpy.empty_likenow produce uninitialized arrays, similar to their NumPy counterparts. Prior to v0.11.0, they produced arrays initialized to zeros. To recover the previous behavior, usejax.numpy.zerosorjax.numpy.zeros_likeinstead.
- The deprecated module j
-
Deprecations
- Passing 2-dimensional arrays (or mixed 2D and 3D arrays) to
jax.numpy.crossis deprecated and will be removed in JAX 0.12.0, aligning with NumPy 2.5 behavior. - Several previously-deprecated APIs from
jax.corehave been removed, includingCallPrimitive,DebugInfo,DropVar,Effect,Effects,InconclusiveDimensionOperation,JaxprTypeError,abstract_token,check_jaxpr,concrete_or_error,find_top_trace,gensym,get_opaque_trace_state,is_concrete,is_constant_dim,is_constant_shape,jaxprs_in_params,new_jaxpr_eqn,no_effects,nonempty_axis_env_DO_NOT_USE,primal_dtype_to_tangent_dtype,unsafe_am_i_under_a_jit_DO_NOT_USE,unsafe_am_i_under_a_vmap_DO_NOT_USE,unsafe_get_axis_names_DO_NOT_USE,valid_jaxtype,JaxprPpContext,JaxprPpSettings,OutputType,aval_mapping_handlers,call,concretization_function_error,custom_typechecks,literalable_types,no_axis_name, andtrace_ctx. - Several previously-deprecated APIs from
jax.interpreters.pxlahave been removed, includingIndex,MeshAxisName,MeshExecutable,global_aval_to_result_handler,global_result_handlers,are_hlo_shardings_equal,is_hlo_sharding_replicated,ArrayMapping,_UNSPECIFIED,array_mapping_to_axis_resources, andop_sharding_to_indices.
- Passing 2-dimensional arrays (or mixed 2D and 3D arrays) to