Furthermore, because they're standard library constructs, they are not straightforward to change in an edition either.
Furthermore, because they're standard library constructs, they are not straightforward to change in an edition either.
1. Add new unsafe relaxed atomics features, by whatever means. Being new there's no backward compatibility worry.
2. Modify the existing safe atomics to treat Relaxed as Acquire-release. This doesn't break anything since Acquire-release is necessarily not breaking Relaxed guarantees, although of course some code now has worse performance than before.
Edited to add: Also, what do you mean you can use Consume today in Rust? Where? My std::sync::atomic::Ordering doesn't even list Consume as an option.
Not only "std library" (which is only available when an OS is used), but also "core library" constructs. That one is available completely independent of the OS. Which means also in the current Rust for Linux project, or any other bare-metal platform.
How do you use the consume ordering in Rust today?