Skip to content

Tracking issue for supporting macOS on Apple Silicon (a.k.a arm64, M1, M2, aarch64) #73908

Closed

Description

@shepmaster

On 2020-06-22, Apple announced that future computers will utilize Arm processors instead of x86_64 processors. This is the tracking issue for supporting that platform, commonly referred to as Apple Silicon.

⚠️ Don't rely on this thread to decide whether to purchase Apple Silicon hardware. ⚠️
The Rust project does not make any guarantee on the level of support the compiler has.

Current status summary (2022-07-05)

  • There is no timeline for any level of support.

  • aarch64-apple-darwin is a tier 2 target and is available for download via rustup. This compiler can be used to cross-compile from x86_64-apple-darwin as well as running natively on Arm.

  • Compiler tests are not being run at this point, as CI has no way of executing them. This is a blocker for Tier 1 support.

  • The x86_64 version of rustc works under Rosetta, producing x86_64 binaries that themselves run under Rosetta.

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 not meant for large scale discussion, questions, or bug reports about a feature. Instead, join the discussion and/or contribute in the #t-compiler/arm Zulip stream or open a new issue for bug reports. You are encouraged to comment here to link to related issues.

This tracking issue will be closely moderated in an attempt to maintain a high signal-to-noise ratio.

Steps

This is not yet intended to be an exhaustive or even accurate list of steps.

Resolved Questions

  • The infra team does not want to maintain our own hardware / VMs. This means solutions like MacStadium, AWS, or "putting our own hardware under someone's desk" are non-starters.

Unresolved Questions

This is not yet intended to be an exhaustive or even accurate list of questions.

Implementation history

Activity

  1. added
    O-macosOperating system: macOS
    O-ArmTarget: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 state
    T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.
    T-infraRelevant to the infrastructure team, which will review and decide on the PR/issue.
    C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFC
    on Jul 1, 2020
  2. hasanihunter commented on Jul 2, 2020

    @hasanihunter
  3. shepmaster commented on Jul 2, 2020

    @shepmaster
    Author
  4. rudyrichter commented on Jul 13, 2020

    @rudyrichter
  5. shepmaster commented on Jul 13, 2020

    @shepmaster
    Author
  6. shepmaster commented on Jul 20, 2020

    @shepmaster
    Author
  7. Absolucy commented on Jul 23, 2020

    @Absolucy

    How can we leave room to support Apple's arm64e?

    I am currently adding PAC/arm64e to a fork using Apple's LLVM. Hopefully some of my work can be reused whenever PAC/arm64e support is upstreamed into LLVM.

  8. glandium commented on Aug 11, 2020

    @glandium
    Contributor

    Not sure if I should open a separate issue, but running the x86-64 rustc on a DTK (via Rosetta 2) yields <jemalloc>: Unsupported system page size messages (but things still work), so it's likely that the arm64 port would need some adjustment in that area. (Not sure if the x86-64 rustc should be adjusted to to work without those messages under Rosetta 2)

    (The issue being that the page size is 16KB instead of 4KB)

  9. glandium commented on Aug 13, 2020

    @glandium
    Contributor

    For the record, I've built the rust compiler on the DTK with #75500, a tweak to stage0.txt to pick a recent nightly, and a config.toml that sets the following:

    build = "x86_64-apple-darwin"
    host = ["aarch64-apple-darwin"]
    target = ["aarch64-apple-darwin"]
    

    and was subsequently able to build all the rust code in Firefox but I had to make changes to three crates that were passing the wrong --target to clang because the rust target differs from the clang target (rust uses aarch64-apple-darwin, clang uses arm64-apple-darwin). This is very unfortunate, and it's probably going to cause problems in other crates.

  10. pnkfelix commented on Aug 27, 2020

    @pnkfelix
    Contributor

    I'm throwing a link to #74820 on here because I suspect we'll want to better understand that bug before we can stabilize a Tier 1 ARM target.

  11. Absolucy commented on Aug 27, 2020

    @Absolucy
  12. 69 remaining items

  13. locked and limited conversation to collaborators on Oct 2, 2023
  14. shepmaster commented on Oct 2, 2023

    @shepmaster
    MemberAuthor

    GitHub recently announced the public beta availability of Apple Silicon builders for GitHub Actions. We are as excited as you are about this news, and we plan on trying them out as soon as possible! After we have had a chance to do so, we'll be sure to report back here. Thanks for hanging in there for as long as you have, and we hope to have more good news in the near future.

  15. unlocked this conversation on Oct 2, 2023
  16. rami3l commented on Mar 15, 2024

    @rami3l
    Member

    Small update: Recently we have been running the full Rustup test suite on aarch64-apple-darwin with the new macos-14 runner and so far it's doing great: rust-lang/rustup#3681 🎉

  17. shepmaster commented on Jul 9, 2024

    @shepmaster
    MemberAuthor

    I have opened RFC 3671 to promote aarch64-apple-darwin to Tier 1.

  18. evieluvsrainbows commented on Aug 3, 2024

    @evieluvsrainbows
    Contributor

    PR #128592 promotes aarch64-apple-darwin to Tier 1, as per the newly merged RFC.

  19. added 2 commits that reference this issue on Aug 11, 2024
  20. added a commit that references this issue on Aug 11, 2024
  21. evieluvsrainbows commented on Aug 11, 2024

    @evieluvsrainbows
    Contributor

    As of today, ARM64 macOS (Darwin) is an officially recognized tier 1 target. I am proposing that this issue be closed now as the main goal of having arm64 macOS be an officially supported Tier 1 target has been reached.

  22. ehuss commented on Aug 11, 2024

    @ehuss
    Contributor

    Thanks @evelynharthbrooke! I'll go ahead and close as completed by #128592.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-tracking-issueCategory: An issue tracking the progress of sth. like the implementation of an RFCO-AArch64Armv8-A or later processors in AArch64 modeO-macosOperating system: macOST-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-infraRelevant to the infrastructure team, which will review and decide on the PR/issue.

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions