3 ms·
I have no idea where's the formal spec for rust, but there's this: https://doc.rust-lang.org/nomicon/atomics.html https://doc.rust-lang.org/nomicon/atomics.html
by gpderetta 3y ago
I have no idea where's the formal spec for rust, but there's this: https://doc.rust-lang.org/nomicon/atomics.html https://doc.rust-lang.org/nomicon/atomics.html
Edit: LLVM predates clang, but dragon egg was a thing.
In any case, before C++11 there was no memory model suitable for a system language[1], so it was the obvious solution.
[1] POSIX, OpenMP and the linux kernel all had memory models, but they were either underspecified, not sufficient or both.
- tialaramex 3y agoThat's telling you that Rust has the C++ Memory Ordering rules, not that it has the C++ Forward Progress guarantee. C likewise has the C++ Memory Ordering, but not its Forward Progress guarantee. As I wrote earlier, C has infinite loops, they're spelled the way you'd obviously write them in C or C++, but in C they're supposed to actually work (whereas in C++ they are UB). Rust is only different here syntactically, the semantic feature is identical to C's choice.