Commit Graph

253 Commits

Author SHA1 Message Date
Sebastian Dröge
b86bba5940 Make join a link to the function's documentation 2017-11-02 19:09:31 +02:00
Sebastian Dröge
a12f511910 Mention that panics can't possibly be caught when compiling with panic=abort 2017-11-02 18:33:25 +02:00
Sebastian Dröge
283b4a1b0b Use ` instead of ' for function names 2017-11-02 18:33:25 +02:00
Sebastian Dröge
5687000979 Update the std::thread docs and clarify that panics can nowadays be caught 2017-11-02 18:33:25 +02:00
bors
d9f1249655 Auto merge of #45285 - alexcrichton:update-bootstrap, r=Mark-Simulacrum
Bump to 1.23 and update bootstrap

This commit updates the bootstrap compiler, bumps the version to 1.23, updates
Cargo, updates books, and updates crates.io dependencies
2017-10-27 18:00:32 +00:00
Alex Crichton
ca18537197 Bump to 1.23 and update bootstrap
This commit updates the bootstrap compiler, bumps the version to 1.23, updates
Cargo, updates books, and updates crates.io dependencies
2017-10-26 13:59:18 -07:00
Alex Crichton
6511e46753 std: Optimize thread park/unpark implementation
This is an adaptation of alexcrichton/futures-rs#597 for the standard library.
The goal here is to avoid locking a mutex on the "fast path" for thread
park/unpark where you're waking up a thread that isn't sleeping or otherwise
trying to park a thread that's already been notified. Mutex performance varies
quite a bit across platforms so this should provide a nice consistent speed
boost for the fast path of these functions.
2017-10-25 08:35:51 -07:00
Stjepan Glavina
a50fe312dc Docs: a LocalKey might start in the Valid state 2017-10-17 11:02:25 +02:00
Jake Goulding
b5b7666120 Don't encourage people to ignore threading errors in the docs 2017-10-08 10:29:32 -04:00
Alex Crichton
d5b0cbbeea Rollup merge of #44651 - bluss:document-thread-name-no-nuls, r=steveklabnik
Document thread builder panics for nul bytes in thread names

This seems to have been undocumented. Mention this where the name is set
(Builder::name) and where the panic could happen (Builder::spawn).

Thread::new is private and I think the builder is the only user where
this matters. A short comment was added to "document" Thread::new too.
2017-09-18 11:04:24 -05:00
Ulrik Sverdrup
7859c9ef44 std: Document thread builder panics for nul bytes in thread names
This seems to have been undocumented. Mention this where the name is set
(Builder::name) and where the panic could happen (Builder::spawn).

Thread::new is private and I think the builder is the only user where
this matters. A short comment was added to "document" Thread::new too.
2017-09-17 10:21:15 +02:00
bors
84bbd14e3f Auto merge of #43972 - TobiasSchaffner:std_clean, r=alexcrichton
Add the libstd-modifications needed for the L4Re target

This commit adds the needed modifications to compile the std crate for the L4 Runtime environment (L4Re).

A target for the L4Re was introduced in commit: c151220a84

In many aspects implementations for linux also apply for the L4Re microkernel.

Some uncommon characteristics had to be resolved:
 * L4Re has no network funktionality
 * L4Re has a maximum stacksize of 1Mb for threads
 * L4Re has no uid or gid

Co-authored-by: Sebastian Humenda <sebastian.humenda@tu-dresden.de>
2017-09-14 03:02:58 +00:00
Tobias Schaffner
b2b5063517 Move default stack min size to thread implementations
The default min stack size value is smaller on l4re and therefore
this value has to be different depending on the platform.
2017-09-13 10:56:41 +02:00
Joshua Liebow-Feeser
ddb072b8d7 std:🧵:LocalKey: Document limitation with initializers 2017-09-07 12:57:08 -07:00
Eduard-Mihai Burtescu
4e2be14986 Make the LocalKey facade of thread_local! inlineable cross-crate. 2017-09-04 08:24:06 +03:00
Alex Crichton
2972687d10 Update bootstrap compiler
This commit updates the bootstrap compiler and clears out a number
of #[cfg(stage0)] annotations and related business
2017-08-31 06:58:58 -07:00
bors
93cdf5e3c4 Auto merge of #44112 - alexcrichton:thread-join, r=sfackler
std: Handle OS errors when joining threads

Also add to the documentation that the `join` method can panic.

cc #34971
cc #43539
2017-08-27 04:20:28 +00:00
Alex Crichton
dc7c7ba0c9 std: Handle OS errors when joining threads
Also add to the documentation that the `join` method can panic.

cc #34971
cc #43539
2017-08-26 19:36:46 -07:00
lukaramu
49ee9f3f08 Fix inconsistent doc headings
This fixes headings reading "Unsafety" and "Example", they should be
"Safety" and "Examples" according to RFC 1574.
2017-08-24 18:42:53 +02:00
Corey Farwell
1d5ee636d7 Thread spawning: don't run min_stack if the user has specified stack size. 2017-08-22 23:05:14 -04:00
Corey Farwell
a4387d54dc Rollup merge of #43891 - Fourchaux:master, r=steveklabnik
Fix typos & us spellings

Fixing some typos and non en-US spellings.

(Update of PR https://github.com/rust-lang/rust/pull/42812 )
2017-08-17 10:44:07 -04:00
Zack M. Davis
1b6c9605e4 use field init shorthand EVERYWHERE
Like #43008 (f668999), but _much more aggressive_.
2017-08-15 15:29:17 -07:00
Fourchaux
c7104be1a3 Fix typos & us spellings 2017-08-15 21:56:30 +02:00
Corey Farwell
659460191d Indicate which stack size option has precedence. 2017-08-14 15:03:31 -04:00
Corey Farwell
10bd80d79b Indicate thread names get passed to the OS. 2017-08-13 16:23:13 -04:00
Corey Farwell
150713ce9f Rewrite docs for stack size/thread names for spawned threads.
* Moves docs about stack size and thread naming from `Builder` to the
  `std::thread` module
* Adds more links to the new module-level documentation
* Mentions the 2 MiB stack size default, but indicate it's subject to
  change

Fixes https://github.com/rust-lang/rust/issues/43805.
2017-08-13 13:20:00 -04:00
bors
4564933538 Auto merge of #43746 - eddyb:sound-thread-local, r=alexcrichton
Check #[thread_local] statics correctly in the compiler.

Fixes #43733 by introducing `#[allow_internal_unsafe]` analogous to `#[allow_internal_unstable]`, for letting a macro expand to `unsafe` blocks and functions even in `#![forbid(unsafe_code)]` crates.

Fixes #17954 by not letting references to `#[thread_local]` statics escape the function they're taken in - we can't just use a magical lifetime because Rust has *lifetime parametrism*, so if we added the often-proposed `'thread` lifetime, we'd have no way to check it in generic code.
To avoid potential edge cases in the compiler, the lifetime is actually that of a temporary at the same position, i.e. `&TLS_STATIC` has the same lifetime `&non_const_fn()` would.

Referring to `#[thread_local]` `static`s at compile-time is banned now (as per PR discussion).

Additionally, to remove `unsafe impl Sync` from `std:🧵:local::fast::Key`, `#[thread_local]` statics are now not required to implement `Sync`, as they are not shared between threads.
2017-08-12 11:57:10 +00:00
Eduard-Mihai Burtescu
92892d3beb Check #[thread_local] statics correctly in the compiler. 2017-08-12 12:58:07 +03:00
Bastien Orivel
47cb3c5bc2 Fix some typos 2017-08-11 00:16:18 +02:00
Corey Farwell
4c08c131fa Indicate how ThreadId is created. 2017-08-02 23:16:34 -04:00
Corey Farwell
795db4c946 Fix broken links in Thread docs. 2017-08-02 23:16:33 -04:00
Mark Simulacrum
25e5f0a48d Rollup merge of #43456 - joshlf:spawn-doc-grammar, r=alexcrichton
std:🧵:spawn: Fix grammar in documentation

Closes #43435.
2017-07-26 06:15:04 -06:00
Alex Crichton
9010567dcc Bump master to 1.21.0
This commit bumps the master branch's version to 1.21.0 and also updates the
bootstrap compiler from the freshly minted beta release.
2017-07-25 07:03:19 -07:00
Joshua Liebow-Feeser
8aa8f80ac0 std:🧵:spawn: Fix grammar in documentation 2017-07-24 11:17:29 -07:00
Bruce Mitchener
539df8121b Fix some doc/comment typos. 2017-07-23 22:48:01 +07:00
bors
8658908cf8 Auto merge of #43185 - durka:thread-local-pub-restricted, r=alexcrichton
support pub(restricted) in thread_local! (round 2)

Resurrected #40984 now that the issue blocking it was fixed. Original description:

`pub(restricted)` was stabilized in #40556 so let's go!

Here is a [playground](https://play.rust-lang.org/?gist=f55f32f164a6ed18c219fec8f8293b98&version=nightly&backtrace=1).

I changed the interface of `__thread_local_inner!`, which is supposedly unstable but this is not checked for macros (#34097 cc @petrochenkov @jseyfried), so this may be an issue.
2017-07-15 06:14:11 +00:00
Lee Bousfield
a301f84b6a Use try_with for with implementation 2017-07-12 10:55:39 -06:00
Alex Burka
8e7c4888b7 stage0 fallback 2017-07-11 20:29:16 +00:00
Alex Burka
8cce5bc7ab use :vis in thread_local! 2017-07-11 20:27:55 +00:00
Alex Burka
b6a2d7e822 support pub(restricted) in thread_local! 2017-07-11 20:27:54 +00:00
Lee Bousfield
8b5549defb Fix @alexcrichton comments 2017-07-11 11:04:19 -04:00
Lee Bousfield
32ae12b3d1 Add LocalKey::try_with as an alternative to state 2017-07-10 19:26:11 -04:00
Steven Fackler
dc411e307a Stabilize ThreadId
Closes #21507
2017-06-24 19:19:26 -07:00
Alex Crichton
06540cb205 rustc: Enable #[thread_local] for Windows
I think LLVM has had support for quite some time now for this, we just never got
around to testing it out and binding it. We've had some trouble landing this in
the past I believe, but it's time to try again!

This commit flags the `#[thread_local]` attribute as being available for Windows
targets and adds an implementation of `register_dtor` in the `thread::local`
module to ensure we can destroy these keys. The same functionality is
implemented in clang via a function called `__tlregdtor` (presumably provided in
some Windows runtime somewhere), but this function unfortunately does not take a
data pointer (just a thunk) which means we can't easily call it. For now
destructors are just run in the same way the Linux fallback is implemented,
which is just keeping track via a single OS-based TLS key.
2017-06-23 16:11:39 -07:00
Mark Buer
0389d40ce0 Capture elapsed duration in Thread::park_timeout example 2017-06-12 13:43:58 +09:30
Mark Simulacrum
32f418f60a Rollup merge of #41981 - gamazeps:thread-detach, r=frewsxcv
[Doc] Expands `detach` documentation in `thread::JoinHande`.

Part of #29378 .

- Adds an example of a thread detaching.
- Expands what `detaching` means.

r? @steveklabnik
2017-06-02 09:10:41 -06:00
Felix Raimundo
b76b9e1467 Expands detach documentation in thread::JoinHande.
Part of #29378 .

- Adds an example of a thread detaching.
- Expands what `detaching` means.
2017-06-02 12:26:04 +02:00
Mark Simulacrum
8bac98a252 Rollup merge of #42141 - ids1024:nobacktrace, r=aturon
Fix building std without backtrace feature, which was broken in ca8b754

Fixes #42139
2017-05-24 19:50:02 -06:00
Mark Simulacrum
f4780a3f7c Rollup merge of #41980 - gamazeps:thread-send, r=steveklabnik
[Doc] Add `'static` and `Send` constraints explanations to `thread::spawn`

Part of #29378.

Explains why the constraints on the closure and its return value are `'static` and `Send`.

Allows to tick of `thread::spawn` from the list of things to document in the `thread` module.

r? @steveklabnik
2017-05-24 19:49:59 -06:00
Ian Douglas Scott
66237afce4 Fix building without backtrace feature, which was broken in ca8b754
Fixes #42139
2017-05-21 12:38:07 -07:00