-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFC: Promote aarch64-unknown-linux-gnu to a Tier-1 Rust target #2959
RFC: Promote aarch64-unknown-linux-gnu to a Tier-1 Rust target #2959
Conversation
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fantastic!
I’m in support of this RFC. |
cc @joshtriplett, who has been working on the general Tier RFC, and @rust-lang/compiler more generally. |
Should stack probes be required for all tier-1 platforms? See rust-lang/rust#43241 and rust-lang/rust#49355. |
I'd really love to see more non-x86 targets become Tier 1! |
Hi again @nagisa. Thank you for your support! :) |
Hi and thanks for your comment. As it happens, @alexcrichton recently reached out to highlight this gap. There is work pencilled in in Q3 to address this. There is an element of uncertainty involved though (the work is planned to be done as a part of the Linaro Toolchain Working Group and there is a vote involved). However stack probing support in LLVM for AArch64 Linux is understood to be a key requirement so servicing it is an inevitability. Whether stack probing needs to be a gating feature for Tier-1 attainment is debatable. Given the ultra complex (to the point of being pathologically hard!) synthetic scenarios that need to be arranged in order to get an exploitable stack clash, I would state that the feature should be a high priority ask and not a gate. Happy to discuss further. Thanks. |
Me too! :) |
@mbrubeck What do you think of the following requirement (for addition to the target tier policy):
|
As someone installing servers on raspberry pi's new 64 bit images, this seems useful! |
tbh I'd also love to see RISC-V targets gain a decent status, but as it's rather hard/expensive to get a RV64GC workstation right now, that'd be a bit hard |
Refactor the required next steps into the summary.
Add Amazon as an example of an organisation doing prominent work with Rust.
comments Add references to the Arm marker team and the Zulip t-compiler/arm stream.
At most, I'd call it a known soundness issue, of which there are many even on Tier 1. "Relaxing the guarantee" sounds like we would never intend to fix this, but really it would just be a pragmatic choice to say that this is not a hard blocker. |
Hi @cuviper , @tmandry , @nagisa , @jonas-schievink and others on the approvals list: RFC author here. Thanks for the comments. All insightful and on point. There's a couple of things I wanted to say by-the-by, in the spirit of this discussion and the broader RFC:
Would getting the badge in a hurry change that in a meaningful way ? Hard to say. That said, my experience in speaking with relevant parties in the Arm ecosystem leads me to maintain that the sooner we get the badge, the sooner we can usher in a lot of interest in Rust more generally and Rust on AArch64 Linux, more specifically. We will of course respect the outcome of your decision, either which way. If you decide that the RFC merge needs to gate on stack probing availability in LLVM and it's coupling to Rust for AArch64 Linux, that's the direction we will move in. I felt it important to share the above points, all the same. Thanks! |
I do agree with @cuviper's point that the absence of a desired feature should be filed as a bug instead of being considered a blocker to policy. Especially if a root issue is LLVM support. Personally speaking, I would rather not have this promotion blocked on known technical details, as I see tier-labels rather as a statement of support and quality levels. |
Yes, but I would wager that most of those (at least, the ones that have been open for awhile) are fairly limited in scope. If not, they'd be P-critical and we'd be fixing it immediately. What's the scope of this? Stack overflows can happen in many programs, and I've seen Rust functions with some very large stack frames (edit: these are the ones that need stack probes). It's not uncommon for programs to have a recursion level dictated by user input (e.g. parsers). So my question is about whether that can be exploited in the wild.
Fair enough. What I was trying to get across is that Rust programmers on Tier 1 targets enjoy freedom in practice from memory exploits when writing safe code. I'm just trying to make sure that remains the case.
This may be true and I think it's an important point. Despite some of my earlier phrasing, my concern isn't about UB existing in the abstract, but about UB that can lead to high-severity exploits in reality. If it matters, I think it's also fair to consider any mitigations (like ASLR) that Linux enables by default, since this RFC is about Linux. I'm not a security expert and I'd be happy to learn that this is pretty much impossible to exploit in practice :)
I tend to agree with this. A statement of support I have no problem with, and I personally would like to see arm64 get promoted as soon as possible. It's clear that this is a platform of significant interest to Rust users and I count myself as one of them! It's the quality level that I'm double checking here. I'd note that users' expectations around quality are shaped by the state of other Tier 1 targets. Even if they used to have this problem, most people have probably forgotten this, and Rust is more mature and stable overall than it was 3 years ago. |
I think this is an important question! I think the main problem is that this question would not come up as a blocking question on a purely technical RFC like an API: it is clear that the API is not yet implemented. If this RFC is merged, is aarch64-unknown-linux-gnu immediately tier1 or is there an implementation issue that lists a number of things that need to be fixed before this RFC is considered "implemented"? Also, statements of quality are also a statement about future issues, that we will care for them, that there's eyes and that issues may be release-blocking. |
Hi @skade, @tmandry, @cuviper, @jonas-schievink, @pietroalbini, @nikomatsakis, others on the approvals list: I wanted to share that this commentary helped prioritise things. :) I can now confirm that work to add probe-stack support to LLVM for AArch64 will officially begin from October 1st (so next week) with a dedicated expert assigned to implement this feature. The implementation will be funded by Arm and done up through Linaro (a not for profit alliance of Arm ecosystem partners). This link which I've shared previously has some details (not all of them openly available sadly). The relevant change is that the 'Fix/version(s)' attribute, which was previously empty has now been changed to 'LLVM 12'. This means that the feature is now intended to be a part of the LLVM 12 release. Extrapolating from LLVM's release history, that is likely to be around Q2/Q3 next year. The Rust linkage can be developed in tandem, I suppose. I expect that the actual implementations will be available sooner in RCs etc but we should assume the release as the end-point for feature availability. |
Hi folks. I note from the commentary here that the general view on the topic at hand has oriented around the caveat posited in @joshtriplett's proposed upcoming draft of the Target Tier policy, and I quote:
On that basis, I'd like to request @aidanhs, @estebank, @jonas-schievink, @nagisa, @nellshamrell and @pnkfelix to please either follow through with casting their vote in favour of this RFC here or to please share their counters so we can proceeed accordingly. Thanks! |
With stack probing being scheduled for implementation, my remaining concern is mismatched expectations. I think we could solve that with clear and explicit documentation. |
@rfcbot resolve should stack probes be implemented before this target is promoted After some discussion we did not reach anything very conclusive but:
hence resolving. |
🔔 This is now entering its final comment period, as per the review above. 🔔 |
The final comment period, with a disposition to merge, as per the review above, is now complete. As the automated representative of the governance process, I would like to thank the author for their work and everyone else who contributed. The RFC will be merged soon. |
Huzzah! The @rust-lang/compiler @rust-lang/infra @rust-lang/release teams have decided to accept this RFC. To track further discussion, subscribe to the tracking issue here: rust-lang/rust#78251 |
Awesome! :) Thanks everyone for all the feedback and support! :) |
Would it be possible to update the link in the first post? Currently it's broken unfortunately. |
Updated the rendered link! |
…crum Promote aarch64-unknown-linux-gnu to Tier 1 This PR promotes the `aarch64-unknown-linux-gnu` target to Tier 1, as proposed by [RFC 2959]: * The `aarch64-gnu` CI job is moved from `auto-fallible` to `auto`. * The platform support documentation is updated, uplifting the target to Tiert 1 with a note about missing stack probes support. * Building the documentation is enabled for the target, as we produce the `rust-docs` component for all Tier 1 platforms. [RFC 2959]: rust-lang/rfcs#2959
…crum Promote aarch64-unknown-linux-gnu to Tier 1 This PR promotes the `aarch64-unknown-linux-gnu` target to Tier 1, as proposed by [RFC 2959]: * The `aarch64-gnu` CI job is moved from `auto-fallible` to `auto`. * The platform support documentation is updated, uplifting the target to Tiert 1 with a note about missing stack probes support. * Building the documentation is enabled for the target, as we produce the `rust-docs` component for all Tier 1 platforms. [RFC 2959]: rust-lang/rfcs#2959
…crum Promote aarch64-unknown-linux-gnu to Tier 1 This PR promotes the `aarch64-unknown-linux-gnu` target to Tier 1, as proposed by [RFC 2959]: * The `aarch64-gnu` CI job is moved from `auto-fallible` to `auto`. * The platform support documentation is updated, uplifting the target to Tiert 1 with a note about missing stack probes support. * Building the documentation is enabled for the target, as we produce the `rust-docs` component for all Tier 1 platforms. [RFC 2959]: rust-lang/rfcs#2959
…crum Promote aarch64-unknown-linux-gnu to Tier 1 This PR promotes the `aarch64-unknown-linux-gnu` target to Tier 1, as proposed by [RFC 2959]: * The `aarch64-gnu` CI job is moved from `auto-fallible` to `auto`. * The platform support documentation is updated, uplifting the target to Tiert 1 with a note about missing stack probes support. * Building the documentation is enabled for the target, as we produce the `rust-docs` component for all Tier 1 platforms. [RFC 2959]: rust-lang/rfcs#2959
This commit contains an RFC proposal to promote the aarch64-unknown-linux-gnu Rust target to Tier-1.
Rendered