Tracking Issue for Swift function call ABI
Open
Nobody has claimed this yet.
B-experimental
C-tracking-issue
F-abi_swift
needs-rfc
S-tracking-unimplemented
T-compiler
T-lang
- Dominant language
- Rust
- Stars
- 119k
- Forks
- 16.1k
- PR merge metrics
- PR metrics pending
Description
This is a tracking issue for the lang experiment for Swift function call ABI.
The feature gate for the issue is #![feature(abi_swift)].
About tracking issues
- Tracking issues are used to record the overall progress of implementation.
- They are also used as hubs connecting to other relevant issues, e.g., bugs or open design questions.
- A tracking issue is however not meant for large scale discussion, questions, or bug reports about a feature.
- Instead, open a dedicated issue for the specific matter and add the relevant feature gate label.
- Discussion comments will get marked as off-topic or deleted.
- Repeated discussions on the tracking issue may lead to the tracking issue getting locked.
Steps
- Find a lang champion willing to sponsor this lang experiment.
https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/Swift.20call.20ABI/with/593327052 - Initial impl + feature gate: #155815
- Figure out the stability story (see Unresolved Questions).
- Adjust documentation (see instructions on rustc-dev-guide)
- Stabilization PR (see instructions on rustc-dev-guide)
Discussions
Unresolved Questions
- How useful is this without
repr(Swift)?- How to soundly implement
repr(Swift)given that it breaks thestride=sizeassumption that is true for all current memory layouts? comment
- How to soundly implement
- Does the Swift abi needs its own
classify_arg? comment - Stability story: Hypothetically, if 12 years from now the Swift ABI was no longer a thing, would we have any reasonable way to remove this, and would we want to?
- Some kind of ABI Tiering (akin to Target Tiers) that allows promotion/demotion (including potential removal)?
- While Swift call ABI is currently (as of May 2026) only stable on Darwin-like targets, do we expand that support if Swift call ABI becomes stable on other non-Darwin-like targets?
- (Related to stabiliyt story) will Darwin-like vs non-Darwin-like targets receive different ABI Tiers?
Implementation history
- Initial exploration: https://github.com/rust-lang/rust/pull/64582
- Initial impl based on #64582: https://github.com/rust-lang/rust/pull/155815
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the initial implementation in PR #155815 and the unresolved questions about stability, repr(Swift), argument classification, and target support. Read the rustc-dev-guide stabilization and documentation-pr guidance. Done means the stability story is resolved, documentation is adjusted, and a stabilization PR is prepared.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- rust, swift
- Domain
- compilers
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100