diff options
| author | bors <bors@rust-lang.org> | 2024-06-24 15:55:28 +0000 | 
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2024-06-24 15:55:28 +0000 | 
| commit | 5a3e2a4e921097c8f2bf6ea7565f8abe878cdbd4 (patch) | |
| tree | 8fef4eec253cbf00799f8a29b3f3a5e01fe4866b /library/std/src/sys/pal/unix/mod.rs | |
| parent | d371d17496f2ce3a56da76aa083f4ef157572c20 (diff) | |
| parent | 50a02ed789ed164f09d3ec8471f71c9c2b02df1d (diff) | |
| download | rust-5a3e2a4e921097c8f2bf6ea7565f8abe878cdbd4.tar.gz rust-5a3e2a4e921097c8f2bf6ea7565f8abe878cdbd4.zip | |
Auto merge of #126523 - joboet:the_great_big_tls_refactor, r=Mark-Simulacrum
std: refactor the TLS implementation As discovered by Mara in #110897, our TLS implementation is a total mess. In the past months, I have simplified the actual macros and their expansions, but the majority of the complexity comes from the platform-specific support code needed to create keys and register destructors. In keeping with #117276, I have therefore moved all of the `thread_local_key`/`thread_local_dtor` modules to the `thread_local` module in `sys` and merged them into a new structure, so that future porters of `std` can simply mix-and-match the existing code instead of having to copy the same (bad) implementation everywhere. The new structure should become obvious when looking at `sys/thread_local/mod.rs`. Unfortunately, the documentation changes associated with the refactoring have made this PR rather large. That said, this contains no functional changes except for two small ones: * the key-based destructor fallback now, by virtue of sharing the implementation used by macOS and others, stores its list in a `#[thread_local]` static instead of in the key, eliminating one indirection layer and drastically simplifying its code. * I've switched over ZKVM (tier 3) to use the same implementation as WebAssembly, as the implementation was just a way worse version of that Please let me know if I can make this easier to review! I know these large PRs aren't optimal, but I couldn't think of any good intermediate steps. `@rustbot` label +A-thread-locals
Diffstat (limited to 'library/std/src/sys/pal/unix/mod.rs')
| -rw-r--r-- | library/std/src/sys/pal/unix/mod.rs | 2 | 
1 files changed, 0 insertions, 2 deletions
| diff --git a/library/std/src/sys/pal/unix/mod.rs b/library/std/src/sys/pal/unix/mod.rs index b370f06e92b..16fc2011d70 100644 --- a/library/std/src/sys/pal/unix/mod.rs +++ b/library/std/src/sys/pal/unix/mod.rs @@ -33,8 +33,6 @@ pub mod rand; pub mod stack_overflow; pub mod stdio; pub mod thread; -pub mod thread_local_dtor; -pub mod thread_local_key; pub mod thread_parking; pub mod time; | 
