<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/src/libstd/thread, branch 1.2.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.2.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.2.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2015-06-18T17:51:31+00:00</updated>
<entry>
<title>Fix libstd tests</title>
<updated>2015-06-18T17:51:31+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2015-06-12T17:49:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=ec333380e03eb1fb94c4938db888d5bed40b8fd6'/>
<id>urn:sha1:ec333380e03eb1fb94c4938db888d5bed40b8fd6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>More test fixes and fallout of stability changes</title>
<updated>2015-06-17T16:07:17+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2015-06-11T02:33:04+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=b4a2823cd6c6f1a560469587f902f3a1f49d3c79'/>
<id>urn:sha1:b4a2823cd6c6f1a560469587f902f3a1f49d3c79</id>
<content type='text'>
</content>
</entry>
<entry>
<title>std: Deprecate the `scoped` feature</title>
<updated>2015-06-17T16:07:17+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2015-06-11T02:04:51+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=d645f8fc286af1841f1a352ddc7282c6e9a7dd8f'/>
<id>urn:sha1:d645f8fc286af1841f1a352ddc7282c6e9a7dd8f</id>
<content type='text'>
The `thread::scoped` function will never be stabilized as-is and the API will
likely change significantly if it does, so this function is deprecated for
removal.
</content>
</entry>
<entry>
<title>std: Split the `std_misc` feature</title>
<updated>2015-06-17T16:06:59+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2015-06-10T01:15:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=6895311e859e1859f9b3f0adc9f1fbb4d2891534'/>
<id>urn:sha1:6895311e859e1859f9b3f0adc9f1fbb4d2891534</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Auto merge of #25952 - alexcrichton:fix-scoped-tls, r=aturon</title>
<updated>2015-06-16T20:00:46+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2015-06-16T20:00:46+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=467e4a6681f8ac3b29fa28406ece66418e1b703d'/>
<id>urn:sha1:467e4a6681f8ac3b29fa28406ece66418e1b703d</id>
<content type='text'>
Currently the compiler has no knowledge of `#[thread_local]` which forces users
to take on two burdens of unsafety:

* The lifetime of the borrow of a `#[thread_local]` static is **not** `'static`
* Types in `static`s are required to be `Sync`

The thread-local modules mostly curb these facets of unsafety by only allowing
very limited scopes of borrows as well as allowing all types to be stored in a
thread-local key (regardless of whether they are `Sync`) through an `unsafe
impl`.

Unfortunately these measures have the consequence of being able to take the
address of the key itself and send it to another thread, allowing the same key
to be accessed from two different threads. This is clearly unsafe, and this
commit fixes this problem with the same trick used by `LocalKey`, which is to
have an indirect function call to find the address of the *current thread's*
thread local. This way the address of thread local keys can safely be sent among
threads as their lifetime truly is `'static`.

This commit will reduce the performance of cross-crate scoped thread locals as
it now requires an indirect function call, but this can likely be overcome in a
future commit.

Closes #25894
</content>
</entry>
<entry>
<title>Conver reborrows to .iter() calls where appropriate</title>
<updated>2015-06-11T12:56:07+00:00</updated>
<author>
<name>Joshua Landau</name>
<email>joshua@landau.ws</email>
</author>
<published>2015-06-11T12:56:07+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=d7f5fa4636b12c3dadd626e708ec7cef654faf54'/>
<id>urn:sha1:d7f5fa4636b12c3dadd626e708ec7cef654faf54</id>
<content type='text'>
</content>
</entry>
<entry>
<title>std: Fix unsoundness of std::thread::ScopedKey</title>
<updated>2015-06-01T21:56:49+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2015-06-01T20:57:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4d3cffa3cfff646fe707363ef9f2bd10f0d0bca7'/>
<id>urn:sha1:4d3cffa3cfff646fe707363ef9f2bd10f0d0bca7</id>
<content type='text'>
Currently the compiler has no knowledge of `#[thread_local]` which forces users
to take on two burdens of unsafety:

* The lifetime of the borrow of a `#[thread_local]` static is **not** `'static`
* Types in `static`s are required to be `Sync`

The thread-local modules mostly curb these facets of unsafety by only allowing
very limited scopes of borrows as well as allowing all types to be stored in a
thread-local key (regardless of whether they are `Sync`) through an `unsafe
impl`.

Unfortunately these measures have the consequence of being able to take the
address of the key itself and send it to another thread, allowing the same key
to be accessed from two different threads. This is clearly unsafe, and this
commit fixes this problem with the same trick used by `LocalKey`, which is to
have an indirect function call to find the address of the *current thread's*
thread local. This way the address of thread local keys can safely be sent among
threads as their lifetime truly is `'static`.

This commit will reduce the performance of cross-crate scoped thread locals as
it now requires an indirect function call, but this can likely be overcome in a
future commit.

Closes #25894
</content>
</entry>
<entry>
<title>std: Add an option to disable ELF based TLS</title>
<updated>2015-05-28T17:14:42+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2015-05-28T06:24:27+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=1b5f9cb1f1529e03cd9a1d60a40d17624baffa65'/>
<id>urn:sha1:1b5f9cb1f1529e03cd9a1d60a40d17624baffa65</id>
<content type='text'>
This commit adds a ./configure option called `--disable-elf-tls` which disables
ELF based TLS (that which is communicated to LLVM) on platforms which already
support it. OSX 10.6 does not support this form of TLS, and some users of Rust
need to target 10.6 and are unable to do so due to the usage of TLS. The
standard library will continue to use ELF based TLS on OSX by default (as the
officially supported platform is 10.7+), but this adds an option to compile the
standard library in a way that is compatible with 10.6.
</content>
</entry>
<entry>
<title>Use `const fn` to abstract away the contents of UnsafeCell &amp; friends.</title>
<updated>2015-05-27T08:19:03+00:00</updated>
<author>
<name>Eduard Burtescu</name>
<email>edy.burt@gmail.com</email>
</author>
<published>2015-05-27T08:18:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=377b0900aede976b2d37a499bbd7b62c2e39b358'/>
<id>urn:sha1:377b0900aede976b2d37a499bbd7b62c2e39b358</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Auto merge of #24920 - alexcrichton:duration, r=aturon</title>
<updated>2015-05-14T18:18:39+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2015-05-14T18:18:39+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=dd4dad8c860363077a3d53af025a0c029a613320'/>
<id>urn:sha1:dd4dad8c860363077a3d53af025a0c029a613320</id>
<content type='text'>
This commit is an implementation of [RFC 1040][rfc] which is a redesign of the
currently-unstable `Duration` type. The API of the type has been scaled back to
be more conservative and it also no longer supports negative durations.

[rfc]: https://github.com/rust-lang/rfcs/blob/master/text/1040-duration-reform.md

The inner `duration` module of the `time` module has now been hidden (as
`Duration` is reexported) and the feature name for this type has changed from
`std_misc` to `duration`. All APIs accepting durations have also been audited to
take a more flavorful feature name instead of `std_misc`.

Closes #24874
</content>
</entry>
</feed>
