Skip to content

Move std::thread_local::* into std::thread#909

Merged
aturon merged 2 commits into
rust-lang:masterfrom
carllerche:master
Mar 20, 2015
Merged

Move std::thread_local::* into std::thread#909
aturon merged 2 commits into
rust-lang:masterfrom
carllerche:master

Conversation

@carllerche

Copy link
Copy Markdown
Contributor

Propose moving the contents of std::thread_local::* into std::thread

Rendered

@CloudiDust

Copy link
Copy Markdown
Contributor

+1 to std::thread_local -> std::thread::local.

Though this is a breaking change, it is also a small one, and if I am reading #911 correctly, then there may be breaking changes to std::thread_local (specially s::t::Key) anyway.

@blaenk

blaenk commented Feb 27, 2015

Copy link
Copy Markdown
Contributor

Good idea.

@liigo

liigo commented Feb 27, 2015

Copy link
Copy Markdown
Contributor

Both std::thread::local and std::thread::tls are good places.

@codyps

codyps commented Feb 27, 2015

Copy link
Copy Markdown

tls is an initialism that expands to thread_local_storage, so it'd be a little funny, one could read it as std::thread::thread_local_storage.

On std::thread::local : are we really sure that the only thing that will ever be local to threads is storage? And does local actually describe what we're using? (local is an adjective in it's usage in tls, storage is a noun)

All that said: the current name suffers from some of my nit-picking as well, so it isn't really an excuse not to change what we have now to one of the proposed items.

@aturon

aturon commented Feb 28, 2015

Copy link
Copy Markdown
Contributor

This is a great idea! The fact that thread_local ended up as a separate top-level module was mostly an accident of stabilization history.

A submodule called local is a reasonable idea; I want to chew on it a little bit more. But strong 👍 to merging in some fashion.

@CloudiDust

Copy link
Copy Markdown
Contributor

@jmesmon When people talk about "thread locals" (note here local is used like a noun), I tend to assume that they are referring to "thread local storage/variables", though technically there are other things that are local to threads. So I am fine with std::thread::local.

Also, I believe we can "repurpose" the module a bit, and actually put other thread local entities inside std::thread::local if we want to.

@aturon aturon self-assigned this Mar 5, 2015
@aturon

aturon commented Mar 17, 2015

Copy link
Copy Markdown
Contributor

Since there's very little in thread_local today, I wonder if we could instead import the contents with a prefix: LocalKey and ScopedKey perhaps?

@CloudiDust

Copy link
Copy Markdown
Contributor

@aturon, LocalKey and ScopedKey are good names. I do wonder if we have plans to add things to std::thread_local/std::thread::local? If not, then we can deprecate std::thread_local and move the two types to std::thread.

@aturon

aturon commented Mar 19, 2015

Copy link
Copy Markdown
Contributor

@carllerche Can you update the RFC with the LocalKey and ScopedKey proposal? It was discussed by the core team today and is otherwise ready to be accepted.

@aturon

aturon commented Mar 20, 2015

Copy link
Copy Markdown
Contributor

This RFC, which is a minor organizational tweak, has been approved. The final decision was to use LocalKey and ScopedKey; I updated the RFC accordingly (as per @carllerche's request on IRC).

Tracking issue

aturon added a commit to aturon/rust that referenced this pull request Mar 23, 2015
This commit implements [RFC
909](rust-lang/rfcs#909):

The `std::thread_local` module is now deprecated, and its contents are
available directly in `std::thread` as `LocalKey`, `LocalKeyState`, and
`ScopedKey`.

The macros remain exactly as they were, which means little if any code
should break. Nevertheless, this is technically a:

[breaking-change]

Closes rust-lang#23547
alexcrichton added a commit to alexcrichton/rust that referenced this pull request Mar 23, 2015
This commit implements [RFC 909](rust-lang/rfcs#909):

The `std::thread_local` module is now deprecated, and its contents are
available directly in `std::thread` as `LocalKey`, `LocalKeyState`, and
`ScopedKey`.

The macros remain exactly as they were, which means little if any code
should break. Nevertheless, this is technically a:

[breaking-change]

Closes rust-lang#23547
@Centril Centril added the A-threads Threading related proposals & ideas label Nov 23, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-threads Threading related proposals & ideas

Projects

None yet

Development

Successfully merging this pull request may close these issues.

7 participants