Back to Freedom.Tech Back
All MLX releasesAll versions
Release Wed, Oct 14, 2026 6 min read

MLX 0.32.4

Original release notes

What's Changed

  • Adding VJP for the scaled dot product attention. by @tpegolotti in https://github.com/ml-explore/mlx/pull/4563
  • python: Add __pos__ support to array by @aaishwarymishra in https://github.com/ml-explore/mlx/pull/4488
  • Add Python 3.15 and 3.15t support by @XXXXRT666 in https://github.com/ml-explore/mlx/pull/4555
  • Add fixed size unique operation by @louen in https://github.com/ml-explore/mlx/pull/4501
  • Fix normalizing single-element slice with negative stride by @axiom-of-choice in https://github.com/ml-explore/mlx/pull/4446
  • Patch bump to 0.32.4 by @zcbenz in https://github.com/ml-explore/mlx/pull/4582
  • Adding VJP for gated delta net. by @tpegolotti in https://github.com/ml-explore/mlx/pull/4565
  • Fix col_reduce_longcolumn for negative-stride views by @mateuuszzzzz in https://github.com/ml-explore/mlx/pull/4529
  • Clear CUDA errors once reported and raise eval errors in buffer protocol by @aleroot in https://github.com/ml-explore/mlx/pull/4523
  • Improve pre-M5 metal memory usage for SDPA D512 by @dhiltgen in https://github.com/ml-explore/mlx/pull/4518
  • Fix split data size span by @michalk8 in https://github.com/ml-explore/mlx/pull/4540
  • Re-introduce Array API Tests suite by @prady0t in https://github.com/ml-explore/mlx/pull/4433
  • Fix view inside of a vmap by @michalk8 in https://github.com/ml-explore/mlx/pull/4586
  • Fix cumsum of a non-contiguous bool by @michalk8 in https://github.com/ml-explore/mlx/pull/4590
  • docs: contraction dtype requirements in matmul/einsum by @simeetnayan81 in https://github.com/ml-explore/mlx/pull/4550
  • Fixing cooperative tensor build issues on Mac OS 27 by @tpegolotti in https://github.com/ml-explore/mlx/pull/4594
  • Handle EOF and EINTR in ParallelFileReader::read by @Ritabanm in https://github.com/ml-explore/mlx/pull/4532
  • Clamp slice bounds when a slice is combined with an array index by @IshaanPotle in https://github.com/ml-explore/mlx/pull/4513
  • Fixes grouped Conv1d/Conv2d init to use in_channels // groups by @CodeWithMoin in https://github.com/ml-explore/mlx/pull/4544
  • Fix mx.view misaligned offset by @michalk8 in https://github.com/ml-explore/mlx/pull/4585
  • [CUDA] Add fp_gather_qmv to optimize gather_qmm by @dhiltgen in https://github.com/ml-explore/mlx/pull/4508
  • Fix eval cleanup deadlock by committing GPU streams before waiting by @ronaldmannak in https://github.com/ml-explore/mlx/pull/4556
  • Fix shared_buffer_reshape contiguity flags by @michalk8 in https://github.com/ml-explore/mlx/pull/4589
  • Fix view last axis stride by @michalk8 in https://github.com/ml-explore/mlx/pull/4587
  • Fix empty unsigned sum/prod failing on Metal by @CodeWithMoin in https://github.com/ml-explore/mlx/pull/4546
  • [CUDA] Add gather_qmm_rhs_sm80 by @dhiltgen in https://github.com/ml-explore/mlx/pull/4554
  • python: Fix bare ellipsis __setitem__ by squeezing leading singleton dimensions by @shaeantoine in https://github.com/ml-explore/mlx/pull/4561
  • Fix row/col contiguous flags in view by @michalk8 in https://github.com/ml-explore/mlx/pull/4588
  • Do not cache failed distributed backend initialization by @ronaldmannak in https://github.com/ml-explore/mlx/pull/4558
  • Fix reduction over large arrays by @nicoloangileri in https://github.com/ml-explore/mlx/pull/4549
  • docs: Correct the export callback type in the guide by @ssmall256 in https://github.com/ml-explore/mlx/pull/4578
  • Fix MultiOptimizer crash when an optimizer's group is empty by @ishtihoss in https://github.com/ml-explore/mlx/pull/4570
  • Fix fft size one by @michalk8 in https://github.com/ml-explore/mlx/pull/4591
  • Sanitize '-' in make_template_hash for metal kernel by @gokay-ai in https://github.com/ml-explore/mlx/pull/4584
  • Fix as_strided contiguity by @sofinvalery in https://github.com/ml-explore/mlx/pull/4575
  • Reject non-aligned pointers when converting to mx.array by @michalk8 in https://github.com/ml-explore/mlx/pull/4592
  • Fix conjugation in complex VJPs for inverse trig ops, cos, sqrt, and rsqrt by @devYRPauli in https://github.com/ml-explore/mlx/pull/4606
  • Fix complex to bool by @michalk8 in https://github.com/ml-explore/mlx/pull/4593
  • [jaccl] second cable for the mesh by @nastya236 in https://github.com/ml-explore/mlx/pull/4607
  • Fix vmap of scatter placing the batch axis wrongly in the updates by @Adityaj0 in https://github.com/ml-explore/mlx/pull/4322
  • Unroll TK=4 keys per iter in sdpa_vector_2pass_1 by @Stonesjtu in https://github.com/ml-explore/mlx/pull/4596
  • Fix CPU float16 SIMD comparison masks by @crabel99 in https://github.com/ml-explore/mlx/pull/4602
  • Add jvp support for logcumsumexp by @navthings in https://github.com/ml-explore/mlx/pull/4611
  • [CUDA] Export CommandEncoder and Device by @erwinzhang7 in https://github.com/ml-explore/mlx/pull/4619
  • Use the fast qmv kernel for outputs not divisible by 8 by @wyanzhao in https://github.com/ml-explore/mlx/pull/4516
  • Fix ResidencySets reading autoreleased error object by @Brooooooklyn in https://github.com/ml-explore/mlx/pull/4623
  • Use the small-channel implicit gemm loader for C_per_group = 8 (and depthwise C % 8) by @zsun6 in https://github.com/ml-explore/mlx/pull/4617
  • [CUDA] Reduce floor for fp_gather_qmv by @dhiltgen in https://github.com/ml-explore/mlx/pull/4620
  • Fix default.metallib lookup under swift test with Swift Build by @heckj in https://github.com/ml-explore/mlx/pull/4527
  • Fix metal validation error when passing empty vector by @aleroot in https://github.com/ml-explore/mlx/pull/4622
  • Replace Black formatter with ruff by @aaishwarymishra in https://github.com/ml-explore/mlx/pull/4600
  • Tune M1 quantized matmul dispatch for six-row large shapes by @DeadByDawn101 in https://github.com/ml-explore/mlx/pull/4629
  • [metal] Add env var based residency refresh interval by @dhiltgen in https://github.com/ml-explore/mlx/pull/4633
  • Promote integer inputs in logcumsumexp by @vijay-kapse in https://github.com/ml-explore/mlx/pull/4625
  • Fix slicing's non contiguous start by @michalk8 in https://github.com/ml-explore/mlx/pull/4599
  • Fix float16 overflow in clip_grad_norm by @ishtihoss in https://github.com/ml-explore/mlx/pull/4626
  • Collapse the non sorted axes to pick the contiguous sort kernel by @kapellirohith in https://github.com/ml-explore/mlx/pull/4366
  • Fix 32 bit dispatch grid overflow in Metal reductions by @Lyxot in https://github.com/ml-explore/mlx/pull/4437
  • Fix gpu boolean masking in 0 dim array by @aaishwarymishra in https://github.com/ml-explore/mlx/pull/4635
  • Fix vmap of an inverse real FFT to an odd length by @vijay-kapse in https://github.com/ml-explore/mlx/pull/4637
  • Fix cross-process race in CPU compile cache by @MarcosAsh in https://github.com/ml-explore/mlx/pull/4638
  • Update acknowledgments for past pinv contribution by @adi-dhulipala in https://github.com/ml-explore/mlx/pull/4645
  • Fix foreign buffer ownership by @michalk8 in https://github.com/ml-explore/mlx/pull/4634
  • Add MLX_CONV_WINOGRAD switch to disable winograd for conv2d by @ishaanzee in https://github.com/ml-explore/mlx/pull/4639
  • Keep split-K quantized matmul partials in float32 by @mattt in https://github.com/ml-explore/mlx/pull/4641
  • Thin N GEMM kernels by @Isalia20 in https://github.com/ml-explore/mlx/pull/4640
  • Add 1-bit affine quantization support (Metal) by @khosravipasha in https://github.com/ml-explore/mlx/pull/3161
  • Update Metal Complex division in numpy style to avoid overflow condition. by @aaishwarymishra in https://github.com/ml-explore/mlx/pull/4644
  • Fix pickle bfloat16 strides by @michalk8 in https://github.com/ml-explore/mlx/pull/4649
  • Fix metal negative stride index in masked_scatter/scatter/SDPA mask/segmented_gemm by @michalk8 in https://github.com/ml-explore/mlx/pull/4650
  • Fix missing break binary bool by @michalk8 in https://github.com/ml-explore/mlx/pull/4651
  • Fix cpu binary_op_dispatch_dims on large data by @Prudctual in https://github.com/ml-explore/mlx/pull/4648
  • Add FloorDivide primitive for integer floor division by @CodeAndCanvas728 in https://github.com/ml-explore/mlx/pull/4642
  • [Metal] Fix SDPA max threadgroup for M1/M2 generation by @dhiltgen in https://github.com/ml-explore/mlx/pull/4643
  • Fix incorrect output mask computation in mx.block_masked_mm by @michalk8 in https://github.com/ml-explore/mlx/pull/4652
  • Add thin M GEMM dispatch by @Isalia20 in https://github.com/ml-explore/mlx/pull/4654
  • Fix Python dtpye -> mlx conversion narrowing by @michalk8 in https://github.com/ml-explore/mlx/pull/4656
  • Fix input/output scalar merging in compile by @michalk8 in https://github.com/ml-explore/mlx/pull/4658
  • Validate .npy shape in mlx/io/load.cpp by @SounLabs in https://github.com/ml-explore/mlx/pull/4657
  • Replace "pull_request_target" event with "pull_request" in update_bypass_list workflow by @zcbenz in https://github.com/ml-explore/mlx/pull/4667
  • [CUDA] Only count consecutive misses in the LRUCache thrashing check by @ddalcu in https://github.com/ml-explore/mlx/pull/4661
  • Fix conv input gradient shape with uneven or large padding by @MarcosAsh in https://github.com/ml-explore/mlx/pull/4662
  • Fix missing stream in layer_norm and sdpa fallbacks by @AkshayShah03 in https://github.com/ml-explore/mlx/pull/4663
  • Fix direct CPU conv writing past output by @SashaMIT in https://github.com/ml-explore/mlx/pull/4668
  • Add stft and istft to mlx.core.fft by @eyupcanakman in https://github.com/ml-explore/mlx/pull/3639
  • Fix lost rank output in the distributed launcher by @tc3oliver in https://github.com/ml-explore/mlx/pull/4615
  • Fix split-K test compatibility on M5, M6 by @magnuslundstedt in https://github.com/ml-explore/mlx/pull/4677
  • Fix signedness warning in quantized Metal tail bounds check by @jrp2014 in https://github.com/ml-explore/mlx/pull/4675
  • fix batched row count mismatch in metal qvm_split_k by @Prudctual in https://github.com/ml-explore/mlx/pull/4673
  • fix metal conv bounds checks and integer overflows by @Prudctual in https://github.com/ml-explore/mlx/pull/4672
  • python: Make arctan2/radians/degrees support scalar inputs by @SleepAviator in https://github.com/ml-explore/mlx/pull/4679
  • Fix missing add_temporary in pad_gpu/fill_gpu by @ronaldmannak in https://github.com/ml-explore/mlx/pull/4660
  • Enable non-transposed NAX gather_qmm_rhs by @Lyxot in https://github.com/ml-explore/mlx/pull/4684
  • Add Metal extension build support by @XXXXRT666 in https://github.com/ml-explore/mlx/pull/4004
  • Adding minmax method to MLX to follow Numpy/Jax API by @aaishwarymishra in https://github.com/ml-explore/mlx/pull/4674
  • Fix missing stream in gather matmul indices cast by @petrukha-ivan in https://github.com/ml-explore/mlx/pull/4687
  • [BUG] Metal fence deadlock by @nastya236 in https://github.com/ml-explore/mlx/pull/4689

New Contributors

  • @mateuuszzzzz made their first contribution in https://github.com/ml-explore/mlx/pull/4529
  • @IshaanPotle made their first contribution in https://github.com/ml-explore/mlx/pull/4513
  • @CodeWithMoin made their first contribution in https://github.com/ml-explore/mlx/pull/4544
  • @shaeantoine made their first contribution in https://github.com/ml-explore/mlx/pull/4561
  • @nicoloangileri made their first contribution in https://github.com/ml-explore/mlx/pull/4549
  • @ssmall256 made their first contribution in https://github.com/ml-explore/mlx/pull/4578
  • @gokay-ai made their first contribution in https://github.com/ml-explore/mlx/pull/4584
  • @Stonesjtu made their first contribution in https://github.com/ml-explore/mlx/pull/4596
  • @crabel99 made their first contribution in https://github.com/ml-explore/mlx/pull/4602
  • @navthings made their first contribution in https://github.com/ml-explore/mlx/pull/4611
  • @heckj made their first contribution in https://github.com/ml-explore/mlx/pull/4527
  • @DeadByDawn101 made their first contribution in https://github.com/ml-explore/mlx/pull/4629
  • @vijay-kapse made their first contribution in https://github.com/ml-explore/mlx/pull/4625
  • @ishaanzee made their first contribution in https://github.com/ml-explore/mlx/pull/4639
  • @mattt made their first contribution in https://github.com/ml-explore/mlx/pull/4641
  • @khosravipasha made their first contribution in https://github.com/ml-explore/mlx/pull/3161
  • @CodeAndCanvas728 made their first contribution in https://github.com/ml-explore/mlx/pull/4642
  • @SounLabs made their first contribution in https://github.com/ml-explore/mlx/pull/4657
  • @ddalcu made their first contribution in https://github.com/ml-explore/mlx/pull/4661
  • @AkshayShah03 made their first contribution in https://github.com/ml-explore/mlx/pull/4663
  • @SashaMIT made their first contribution in https://github.com/ml-explore/mlx/pull/4668
  • @tc3oliver made their first contribution in https://github.com/ml-explore/mlx/pull/4615
  • @SleepAviator made their first contribution in https://github.com/ml-explore/mlx/pull/4679
  • @petrukha-ivan made their first contribution in https://github.com/ml-explore/mlx/pull/4687

Full Changelog: https://github.com/ml-explore/mlx/compare/v0.32.3...v0.32.4