Skip to content

Tracking Issue for Swift function call ABI #156481

@jieyouxu

Description

@jieyouxu

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

Discussions

Unresolved Questions

  • How useful is this without repr(Swift)?
    • How to soundly implement repr(Swift) given that it breaks the stride=size assumption that is true for all current memory layouts? comment
  • 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

Metadata

Metadata

Assignees

No one assigned

    Labels

    B-experimentalBlocker: In-tree experiment; RFC pending, not yet approved or unneeded (requires FCP to stabilize).C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCF-abi_swift`#![feature(abi_swift)]`S-tracking-unimplementedStatus: The feature has not been implemented.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-langRelevant to the language teamneeds-rfcThis change is large or controversial enough that it should have an RFC accepted before doing it.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions