Skip to content

Fix CompiledTrace capture for the Sendable mlx-swift compile API - #86

Merged
solderzzc merged 1 commit into
mainfrom
fix/compiledtrace-sendable
Oct 21, 2026
Merged

solderzzc merged 1 commit into
mainfrom
fix/compiledtrace-sendable

Conversation

@solderzzc

Copy link
Copy Markdown
Member

mlx-swift's compile now takes an @escaping @Sendable closure. CompiledTrace.compiled(_:) captured the non-Sendable owner, so Swift 6 rejects it with "converting non-Sendable function value ... may introduce data races" (CompiledTrace.swift:162). This is what breaks the umbrella job on SharpAI/mlx-swift#28.

The fix keeps the owner unowned, in a small @unchecked Sendable box, so the closure captures only Sendable values. The trace still never retains its owner and still only runs against it.

Verification: the local build is blocked on this machine (missing Metal toolchain component), so CI is the check here. Downstream: after this merges, SwiftLM's mlx-swift-lm pin needs a bump before the umbrella job on mlx-swift#28 can pass.

🤖 Generated with Claude Code

mlx-swift's compile now takes an @escaping @sendable closure. The closure in
CompiledTrace.compiled(_:) captured the non-Sendable owner, which Swift 6 rejects
(CompiledTrace.swift:162). Keep the owner unowned in a small unchecked-Sendable
box so the closure captures only Sendable values. Behavior is unchanged: the
trace still holds its owner unowned and runs only against it.

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
@solderzzc
solderzzc merged commit 731552a into main Oct 21, 2026
7 checks passed
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