-
Notifications
You must be signed in to change notification settings - Fork 69
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
MCP: Raise UEFI Targets to Tier-2 #555
Comments
This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed. cc @rust-lang/compiler @rust-lang/compiler-contributors |
@rustbot second |
@rustbot label -final-comment-period +major-change-accepted |
… r=JohnTitor Promote {aarch64,i686,x86_64}-unknown-uefi to Tier 2 MCP: rust-lang/compiler-team#555 CC `@dvdhrm`
… r=JohnTitor Promote {aarch64,i686,x86_64}-unknown-uefi to Tier 2 MCP: rust-lang/compiler-team#555 CC ``@dvdhrm``
… r=JohnTitor Promote {aarch64,i686,x86_64}-unknown-uefi to Tier 2 MCP: rust-lang/compiler-team#555 CC ```@dvdhrm```
… r=JohnTitor Promote {aarch64,i686,x86_64}-unknown-uefi to Tier 2 MCP: rust-lang/compiler-team#555 CC `@dvdhrm`
Promote {aarch64,i686,x86_64}-unknown-uefi to Tier 2 MCP: rust-lang/compiler-team#555 CC `@dvdhrm`
Promote {aarch64,i686,x86_64}-unknown-uefi to Tier 2 MCP: rust-lang/compiler-team#555 CC `@dvdhrm`
Promote {aarch64,i686,x86_64}-unknown-uefi to Tier 2 MCP: rust-lang/compiler-team#555 CC `@dvdhrm`
Proposal
I am proposing to raise all 3 currently merged UEFI targets to Tier-2 (according to the target-tier-policy):
aarch64-unknown-uefi
i686-unknown-uefi
x86_64-unknown-uefi
Please note that all three targets have very similar targets that are already Tier-2 or even Tier-1:
aarch64-unknown-uefi
:aarch64-unknown-none
@ Tier-2i686-unknown-uefi
:i686-pc-windows-msvc
@ Tier-1x86_64-unknown-uefi
:x86_64-pc-windows-msvc
@ Tier-1The UEFI targets all inherit from
msvc_base
and are almost equivalent to their windows-targets (except for aarch64 there is currently no windows-target, for various reasons).target-tier-policy
Following, I will go through all non-trivial requirements of the target-tier-policy (let me know if an omitted entry requires clarification).
UEFI environments are deployed on a global scale and the majority of consumer desktops uses UEFI environments as firmware. Furthermore, in the server market UEFI is gaining adoption for hardware other than x86, especially aarch64.
While C is still the dominant language for UEFI development, there are multiple small to large scale projects using Rust for UEFI development today:
Both Nicholas Bishop (@nicholasbishop) and I (@dvdhrm) volunteer to maintain these targets.
The UEFI specification follows closely the target definitions of the Microsoft Windows platform. The major deviation is the lack of kernel and dynamic linking, as well as a different entry-point. Therefore, undue burden is not expected.
Official documentation of the target has recently been merged into the target-section of the rustc-book.
(see previous quote)
All UEFI targets are almost equivalent to their Microsoft Windows targets, where those exist. However, they use a different entry-point with special arguments to gain access to the firmware interface. Additionally, they lack a Windows kernel and instead run in a single address space with the firmware core. And lastly, access to complex hardware features is usually prohibited (only a single core is used, no interrupts except timers, no address space separation, ...).
The bare-metal targets usually compile into ELF rather than PE32+, hence they cannot be used for UEFI targets either.
While technically we could try to create a more generic bare-metal PE32+ target, the fact that UEFI systems are widely adopted today might justify their own specialized target.
Supporting
std
on UEFI requires significant effort, which is underway. However, the targets have proven popular even withoutstd
available. Hence, I propose to proceed withoutstd
support for now.Note that the UEFI targets also allow for developing a firmware core (as listed above). This means the UEFI protocols used to implement
std
are not available (on the contrary, you would be the one implementing them). Hence, even withstd
support available, there is still a need for no-std UEFI targets.core
andalloc
is fully supported on UEFI targets, as long as a global allocator is registered by the application.Mentors or Reviewers
The previous UEFI targets and PRs have been reviewed by @joshtriplett, @nagisa, @petrochenkov. I would be happy to see them mentor this proposal, but I have not contacted them off-list so far.
I have also communicated with other parties interested in rust UEFI support, who gladly support this effort (CC: @Ayush1325, @makubacki, @phil-opp)
Process
The main points of the Major Change Process are as follows:
@rustbot second
.-C flag
, then full team check-off is required.@rfcbot fcp merge
on either the MCP or the PR.You can read more about Major Change Proposals on forge.
Comments
This issue is not meant to be used for technical discussion. There is a Zulip stream for that. Use this issue to leave procedural comments, such as volunteering to review, indicating that you second the proposal (or third, etc), or raising a concern that you would like to be addressed.
The text was updated successfully, but these errors were encountered: