pypi / mlx
mlx
What changed in mlx 0.29 to 0.32, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-28.
13 breaking3 security19 new APIs and options3 performance4 behavior and defaults1 tooling39 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initmlx 0.3280 changes
Breaking changes 13
Rejects non-aligned pointers when converting to mx.array.
Evaluation errors are raised in the buffer protocol.
NaN values are propagated in arg reductions.
Calling iter() on a 0-dim array now throws TypeError.
Out-of-bounds axes now raise IndexError.
The axis argument now defaults to -1.
Python unstack now returns a tuple instead of a list.
Adam validates eps when constructed.
Errors from CPU streams are raised by synchronize.
Protocol members are declared as methods rather than settable attributes.
Median no longer drops NaN values.
Normalization layers now reject a negative eps value.
Optimizer betas are validated when the optimizer is constructed.
Security 1
Metadata string and array values are bounded against the file mapping.
New APIs and options 19
Adds 1-bit affine quantization support on Metal.
Exports CommandEncoder for CUDA.
Exports Device for CUDA.
Adds a primitive for integer floor division.
Adds a minmax method to follow the NumPy and JAX APIs.
Adds a switch to disable Winograd for conv2d.
Adds istft to mlx.core.fft.
Adds stft to mlx.core.fft.
Adds VJP support for scaled dot product attention.
Adds a fixed-size unique operation.
Adds explicit index and bytes support in Python.
Adds an API to query the buffer size for arrays.
Adds support for matrix transpose.
The axis argument is now optional.
Adds a correction parameter to std.
Adds a correction parameter to var.
Adds support for the __array_namespace_info__ protocol.
Relocatable CUDA DLLs are supported on Windows.
Adds a force_fused option to scaled_dot_product_attention.
Performance 3
Adds fused Metal kernels for fast.cross_entropy.
Adds a fused full-attention path for head_dim 256 on NAX devices.
The decode attention path reads each K/V byte once.
Behavior and default changes 4
Adds JVP support and promotes integer inputs.
Scan operations can now be compiled without shapes.
Assignment through a bare Ellipsis index is now supported.
The axis parameter now defaults to None.
Tooling 1
Adds support for building Metal extensions.
Fixes and other changes 39
Adds support for scalar inputs; radians and degrees gain the same support.
Fixes bare ellipsis assignment by squeezing leading singleton dimensions and clamps slice bounds when combined with an array index.
Adds Python unary plus support to array.
Fixes float16 overflow.
Fixes conversion of complex values to bool.
Fixes conjugation in complex VJPs for inverse trigonometric operations, cos, sqrt, and rsqrt.
Fixes cumsum for non-contiguous boolean arrays.
Fixes FFT with size one and vmap of inverse real FFT to an odd length.
Adds VJP support for gated delta net.
Fixes grouped convolution initialization to use in_channels // groups.
Prevents a crash when an optimizer's group is empty.
Fixes narrowing during Python dtype-to-MLX conversion.
Fixes incorrect output mask computation.
Fixes misaligned offsets, last-axis strides, and contiguous flags in views.
Fixes normalization of single-element slices with negative stride.
Fixes col_reduce_longcolumn for negative-stride views.
Adds support for Python 3.15 and 3.15t.
Fixes view behavior inside vmap and batch-axis placement for scatter updates.
Fixes weight decay mutating caller arrays.
Fixes bytes() on non-contiguous arrays.
Fixes a crash when ellipsis indexing has too many trailing indices.
Fixes floor_divide for integers.
GGUF tensor dimensions are validated.
Fixes an integer division-by-zero crash in CPU sort, scan, and binary operations.
Fixes integer pow zeroing a whole SIMD vector on a negative exponent.
Fixes save corrupting a lazily loaded source file.
Fixes save_safetensors corrupting a lazily loaded source file.
Fixes weight decay mutating caller arrays.
Casting subnormal float values to bool now preserves them.
Avoids zero work in stride-2 ConvTranspose3d.
Fixes scanning over a size-one axis with a padded stride.
A failed CUDA graph commit no longer poisons the encoder.
Floating-point divmod no longer truncates the quotient.
Fixes einsum dropping a trailing empty subscript.
Fixes vmap and jvp for transforms over a subset of axes.
Block scales are rounded up to avoid saturation.
Fixes quantized kernels in JIT builds.
Fixes quantization of sliced arrays.
Negative axes are normalized in sort and argsort.
mlx 0.292 changes
Security 2
MLX has heap-buffer-overflow in load()
MLX has Wild Pointer Dereference in load_gguf()