Skip to content

Update to MLX 0.30.6#6

Open
robert-johansson wants to merge 8 commits intofrost-beta:mainfrom
robert-johansson:main
Open

Update to MLX 0.30.6#6
robert-johansson wants to merge 8 commits intofrost-beta:mainfrom
robert-johansson:main

Conversation

@robert-johansson
Copy link

Summary

  • Bump MLX submodule from 0.25.0 to 0.30.6
  • Add ki::Type specialization for mlx::core::SmallVector (MLX >= 0.26 uses SmallVector for Shape)
  • Update API call sites for breaking changes: std::vector<int>mx::Shape, new output_padding params in conv_transpose, extra arg in scaled_dot_product_attention
  • Split large ki::Set registration calls to stay within template parameter limits
  • Wrap mx::metal::device_info to return the new std::unordered_map return type

Tested on macOS with Apple Silicon (M4). All existing functionality works.

🤖 Generated with Claude Code

Robert Johansson and others added 8 commits February 22, 2026 21:08
Bump MLX submodule from v0.25.0 to v0.30.6 and fix all API changes:

- Add SmallVector<T> kizunapi type specialization (Shape changed from
  std::vector<int> to SmallVector in MLX >= 0.26)
- Add PutIntoShape helper, keep PutIntoVector for std::vector<int> uses
- Update FFT wrapper function pointer types for Shape parameter
- Add output_padding parameter to conv_transpose1d/2d/3d
- Add sinks parameter to scaled_dot_product_attention calls
- Move device_info from metal:: to gpu:: namespace
- Split large ki::Set calls to stay within template argument limits

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update deps/mlx with fix for compile_fuse broadcast split_one bug that
caused "unordered_map::at: key not found" on compiled functions with
~100+ operations. This is an upstream MLX bug (v0.29.4+).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update MLX submodule with improved compile_fuse fix that preserves
the broadcast fusion optimization while fixing the aliasing bug
that caused unordered_map::at crashes on large computation graphs.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Points deps/mlx to ml-explore/mlx main (c8536f52) which includes
the merged compile_fuse broadcast split fix from PR #3166, plus
newer upstream fixes (Metal event leak, conv3d overflow, fence sync).

Replaces the local branch commits (65cefdef, a6d40e4a) which are
now superseded by the upstream merge.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Update MLX submodule to include native lgamma/digamma kernels and
add Node.js bindings for both operations.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Update deps/mlx submodule URL to robert-johansson/mlx (genmlx branch)
  with lgamma, digamma, bessel_i0e, bessel_i1e ops
- Add besselI0e/besselI1e bindings in ops.cc and type declarations

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Report external memory (min 1MB per array) via napi_adjust_external_memory
so the JS GC knows about Metal GPU buffer pressure. This makes GC run
earlier, reducing the chance of hitting Metal's 499K allocation limit.

- Point kizunapi submodule to robert-johansson fork with ExternalMemorySize trait
- Specialize ExternalMemorySize for mx::array (1MB minimum cost)
- Add napi_adjust_external_memory calls in Tidy and Dispose paths

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Adds a native function that bypasses the deferred N-API finalizer queue by
synchronously walking the wrapper registry and freeing arrays whose JS
wrappers have been GC'd. This is critical for synchronous inference loops
where the event loop never yields and deferred finalizers never run.

Includes kizunapi changes:
- CollectDeadWrappers<T>() in InstanceData
- ExternalMemorySize reporting on AllowPassByValue path
- Double-free guard in finalizer callbacks

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant