Weakly link error domains to allow building non-Metal-supporting targets#354
Merged
davidkoski merged 1 commit intoml-explore:mainfrom Feb 10, 2026
Merged
Conversation
There was a problem hiding this comment.
Pull request overview
Updates the vendored Metal-cpp headers to weakly resolve two Metal error-domain constants so projects depending on MLX Swift can link successfully on targets (notably iOS Simulator) where those symbols are not present.
Changes:
- Switch
MTL::TensorDomainto use_MTL_PRIVATE_DEF_WEAK_CONST(dlsym-based) instead of_MTL_PRIVATE_DEF_CONST. - Switch
MTL::IOErrorDomainto use_MTL_PRIVATE_DEF_WEAK_CONSTinstead of_MTL_PRIVATE_DEF_CONST.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated no comments.
| File | Description |
|---|---|
| Source/Cmlx/metal-cpp/Metal/MTLTensor.hpp | Weakly resolves MTLTensorDomain to avoid link-time failures when the symbol isn’t available. |
| Source/Cmlx/metal-cpp/Metal/MTLIOCommandQueue.hpp | Weakly resolves MTLIOErrorDomain to avoid link-time failures when the symbol isn’t available. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
davidkoski
approved these changes
Feb 10, 2026
Collaborator
davidkoski
left a comment
There was a problem hiding this comment.
Thank you! This needs to be included in the combined .hpp file for the xcodeproj but I will rebase #353 on this and update that there.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Proposed changes
Addresses #341 by using
_MTL_PRIVATE_DEF_WEAK_CONSTto weakly linkMTLIOErrorDomainandMTLTensorDomain, which allows Simulator builds for libraries that include MLX Swift.Checklist
Put an
xin the boxes that apply.pre-commit run --all-filesto format my code / installed pre-commit prior to committing changesI have added tests that prove my fix is effective or that my feature works