-
Notifications
You must be signed in to change notification settings - Fork 71
Description
Proposal
The -Csoft-float flag has been added in pre-1.0 times (rust-lang/rust#9617) without much discussion, probably with the intent to mirror -msoft-float in C compilers. It never properly mirrored clang though because it only affected the LLVM float ABI setting, not the "soft-float" target feature (the clang flag sets both). It is also blatantly unsound because it affects how float arguments are passed (rust-lang/rust#129893), making it UB to invoke parts of the standard library.
The flag got deprecated with Rust 1.83 (released November 2024), and in the year since then, nobody spoke up in rust-lang/rust#129893 to have it preserved. I think it is time to remove it. I can totally imagine us bringing back a similar flag, properly registered as a target modifier to preserve soundness, but that should come with a coherent design that works for more than one architecture (the flag only does anything on ARM).
I assume this will need an FCP since it is a breaking change.
Open question: should the flag be removed entirely, or be turned into an is_deprecated_and_do_nothing flag? IOW, should using the flag cause an error, or a warning saying that it is being ignored? So far we apparently often turned removed flags into such warnings, OTOH doing this for an ABI-affecting flag seems like a potentially bad idea.
Mentors or Reviewers
Implementation already available at rust-lang/rust#152973
Process
The main points of the Major Change Process are as follows:
- File an issue describing the proposal.
- A compiler team member who is knowledgeable in the area can second by writing
@rustbot secondor kickoff a team FCP with@rfcbot fcp $RESOLUTION.- Refer to Proposals, Approvals and Stabilization docs for when a second is sufficient, or when a full team FCP is required.
- Once an MCP is seconded, the Final Comment Period begins.
- Final Comment Period lasts for 10 days after all outstanding concerns are solved.
- Outstanding concerns will block the Final Comment Period from finishing. Once all concerns are resolved, the 10 day countdown is restarted.
- If no concerns are raised after 10 days since the resolution of the last outstanding concern, the MCP is considered approved.
You can read more about Major Change Proposals on forge.