rust/library/std/src
Jacob Pratt 43ad753adb
Rollup merge of #122729 - m-ou-se:relax, r=Amanieu
Relax SeqCst ordering in standard library.

Every single SeqCst in the standard library is unnecessary. In all cases, Relaxed or Release+Acquire was sufficient.

As I [wrote](https://marabos.nl/atomics/memory-ordering.html#common-misconceptions) in my book on atomics:

> [..] when reading code, SeqCst basically tells the reader: "this operation depends on the total order of every single SeqCst operation in the program," which is an incredibly far-reaching claim. The same code would likely be easier to review and verify if it used weaker memory ordering instead, if possible. For example, Release effectively tells the reader: "this relates to an acquire operation on the same variable," which involves far fewer considerations when forming an understanding of the code.
>
> It is advisable to see SeqCst as a warning sign. Seeing it in the wild often means that either something complicated is going on, or simply that the author did not take the time to analyze their memory ordering related assumptions, both of which are reasons for extra scrutiny.

r? ````@Amanieu```` ````@joboet````
2024-03-20 20:29:44 -04:00
..
backtrace remove redundant imports 2023-12-10 10:56:22 +08:00
collections Add "put" as a confusable for insert on hash map/set 2024-03-19 14:28:01 -04:00
env remove redundant imports 2023-12-10 10:56:22 +08:00
error core/any: remove Provider trait 2023-08-13 13:07:53 -06:00
f32 Add gamma and ln_gamma functions to f32 and f64 2023-07-31 07:41:50 -07:00
f64 Add gamma and ln_gamma functions to f32 and f64 2023-07-31 07:41:50 -07:00
ffi Rollup merge of #112136 - clarfonthey:ffi-c_str, r=cuviper 2024-03-10 10:58:14 +01:00
fs Convert [u8] to [i8] in test 2024-03-12 16:05:59 +00:00
hash update version placeholders 2023-12-22 11:01:42 +01:00
io Auto merge of #122754 - Mark-Simulacrum:bootstrap-bump, r=albertlarsan68 2024-03-20 13:43:41 +00:00
net SeqCst->Relaxed in std::net::test. 2024-03-20 15:35:13 +01:00
num removed nonfunctioning benchmark 2024-01-11 11:30:12 -05:00
os Expose ucred::peer_cred on QNX targets to enable dist builds 2024-03-19 07:34:27 -07:00
panic review: fix nits and move panic safety tests to the correct place 2020-09-25 23:10:24 +02:00
path remove redundant imports 2023-12-10 10:56:22 +08:00
prelude Add Future and IntoFuture to the 2024 prelude 2024-02-18 23:20:05 +01:00
process Rollup merge of #114379 - RalfJung:command-removed-env-vars, r=m-ou-se 2023-09-22 12:15:25 +02:00
sync Rollup merge of #122729 - m-ou-se:relax, r=Amanieu 2024-03-20 20:29:44 -04:00
sys Rollup merge of #122729 - m-ou-se:relax, r=Amanieu 2024-03-20 20:29:44 -04:00
sys_common SeqCst->{Release,Acquire} in sys_common::thread_local_key. 2024-03-19 15:27:11 +01:00
thread SeqCst->Relaxed in thread local test. 2024-03-20 15:38:09 +01:00
time Rollup merge of #103056 - beetrees:timespec-bug-fix, r=thomcc 2023-05-05 18:40:32 +05:30
alloc.rs SeqCst->{Release,Acquire} for alloc error hook. 2024-03-19 15:27:11 +01:00
ascii.rs Add the basic ascii::Char type 2023-05-03 22:09:33 -07:00
backtrace.rs rename ptr::invalid -> ptr::without_provenance 2024-02-21 20:15:52 +01:00
env.rs Remove doc aliases to PATH 2024-02-29 14:28:47 -05:00
error.rs Clean dead codes 2023-11-26 09:25:07 +08:00
f32.rs Use the guaranteed precision of a couple of float functions in docs 2024-03-01 18:57:42 +01:00
f64.rs Use the guaranteed precision of a couple of float functions in docs 2024-03-01 18:57:42 +01:00
fs.rs Rollup merge of #121403 - kornelski:io-oom, r=dtolnay 2024-03-09 21:40:07 +01:00
keyword_docs.rs Mention labelled blocks in break docs 2024-03-15 10:51:57 -07:00
lib.rs step cfgs 2024-03-20 08:49:13 -04:00
macros.rs added column number to dbg!() 2023-12-12 18:12:23 +08:00
num.rs Switch NonZero alias direction. 2024-01-27 16:38:57 +01:00
panic.rs Implement unwind safety for Condvar 2024-02-28 14:56:36 -08:00
panicking.rs SeqCst->Relaxed for FIRST_PANIC. 2024-03-19 15:27:11 +01:00
path.rs Rollup merge of #120051 - riverbl:os-str-display, r=m-ou-se 2024-02-28 16:04:49 +01:00
process.rs Use generic NonZero everywhere in std. 2024-02-22 15:17:33 +01:00
rt.rs Cfg remove lang items in doctest 2023-12-15 16:17:28 +00:00
time.rs Rust is a proper name: rust → Rust 2024-03-07 07:49:22 +01:00