Skip to content

std: Switch implementations of thread_local! for WASI#159733

Open
alexcrichton wants to merge 1 commit into
rust-lang:mainfrom
alexcrichton:wasi-thread-locals
Open

std: Switch implementations of thread_local! for WASI#159733
alexcrichton wants to merge 1 commit into
rust-lang:mainfrom
alexcrichton:wasi-thread-locals

Conversation

@alexcrichton

Copy link
Copy Markdown
Member

This commit is a change for all WASI targets to use a different underlying implementation in the standard library for thread_local!. Previously all wasm targets, without the atomics feature, were funneled into the no_threads implementation and various fallbacks in the thread_local module. The upcoming wasm32-wasip3 target, however, will actually have threads and will need different treatment. Additionally the modules that wasm32-wasip3 needs all already work on all other WASI targets as well -- for example the pthread_* symbols needed to manage destructors are exposed by wasi-libc.

The end result is that the wasm32-wasip3 target will be "ready for threads" as soon as wasi-libc has support. Other targets shouldn't have any functional difference from before, too.

This commit is a change for all WASI targets to use a different
underlying implementation in the standard library for `thread_local!`.
Previously all wasm targets, without the `atomics` feature, were
funneled into the `no_threads` implementation and various fallbacks in
the `thread_local` module. The upcoming `wasm32-wasip3` target, however,
will actually have threads and will need different treatment.
Additionally the modules that `wasm32-wasip3` needs all already work on
all other WASI targets as well -- for example the `pthread_*` symbols
needed to manage destructors are exposed by `wasi-libc`.

The end result is that the `wasm32-wasip3` target will be "ready for
threads" as soon as `wasi-libc` has support. Other targets shouldn't
have any functional difference from before, too.
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Jul 22, 2026
@rustbot

rustbot commented Jul 22, 2026

Copy link
Copy Markdown
Collaborator

r? @clarfonthey

rustbot has assigned @clarfonthey.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: @ChrisDenton, libs
  • @ChrisDenton, libs expanded to 13 candidates
  • Random selection from 6 candidates

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-libs Relevant to the library team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants