<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/src/libsync/sync/mod.rs, branch try</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=try</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=try'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2014-03-23T16:45:20+00:00</updated>
<entry>
<title>sync: Rewrite the base primitives</title>
<updated>2014-03-23T16:45:20+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2014-03-22T07:50:19+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=ae049e82f876e335b835edb674228090d84f811e'/>
<id>urn:sha1:ae049e82f876e335b835edb674228090d84f811e</id>
<content type='text'>
This commit rewrites the core primitives of the sync library: Mutex, RWLock, and
Semaphore. These primitives now have updated, more modernized apis:

* Guards are returned instead of locking with closures. All condition variables
  have moved inside the guards and extraneous methods have been removed.
* Downgrading on an rwlock is now done through the guard instead of the rwlock
  itself.

These types are meant to be general locks, not locks of an internal type (for
external usage). New types will be introduced for locking shared data.
</content>
</entry>
<entry>
<title>Remove outdated and unnecessary std::vec_ng::Vec imports.</title>
<updated>2014-03-21T14:08:57+00:00</updated>
<author>
<name>Huon Wilson</name>
<email>dbau.pp+github@gmail.com</email>
</author>
<published>2014-03-21T11:37:41+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=6d778ff61058a18978a0c24d61f6a84e57138fa4'/>
<id>urn:sha1:6d778ff61058a18978a0c24d61f6a84e57138fa4</id>
<content type='text'>
(And fix some tests.)
</content>
</entry>
<entry>
<title>test: Make manual changes to deal with the fallout from removal of</title>
<updated>2014-03-21T12:37:21+00:00</updated>
<author>
<name>Patrick Walton</name>
<email>pcwalton@mimiga.net</email>
</author>
<published>2014-03-05T23:28:08+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=af79a5aa7da4f42fc0939a19f46fa73b894d6e9a'/>
<id>urn:sha1:af79a5aa7da4f42fc0939a19f46fa73b894d6e9a</id>
<content type='text'>
`~[T]` in test, libgetopts, compiletest, librustdoc, and libnum.
</content>
</entry>
<entry>
<title>std: Rename Chan/Port types and constructor</title>
<updated>2014-03-13T20:23:29+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2014-03-09T21:58:32+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=78580651131c9daacd7e5e4669af819cdd719f09'/>
<id>urn:sha1:78580651131c9daacd7e5e4669af819cdd719f09</id>
<content type='text'>
* Chan&lt;T&gt; =&gt; Sender&lt;T&gt;
* Port&lt;T&gt; =&gt; Receiver&lt;T&gt;
* Chan::new() =&gt; channel()
* constructor returns (Sender, Receiver) instead of (Receiver, Sender)
* local variables named `port` renamed to `rx`
* local variables named `chan` renamed to `tx`

Closes #11765
</content>
</entry>
<entry>
<title>Rename all variables that have uppercase characters in their names to use only lowercase characters</title>
<updated>2014-03-05T02:23:36+00:00</updated>
<author>
<name>Palmer Cox</name>
<email>p@lmercox.com</email>
</author>
<published>2014-02-15T21:15:03+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=6d9bdf975aba3cd2f571f4e3695136f2ee85f37f'/>
<id>urn:sha1:6d9bdf975aba3cd2f571f4e3695136f2ee85f37f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Cleaned up `std::any`</title>
<updated>2014-03-04T20:10:23+00:00</updated>
<author>
<name>Marvin Löbel</name>
<email>loebel.marvin@gmail.com</email>
</author>
<published>2014-03-03T00:01:13+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3158047a459b6d60d0f8f6bf5c299db0910e029a'/>
<id>urn:sha1:3158047a459b6d60d0f8f6bf5c299db0910e029a</id>
<content type='text'>
- Added `TraitObject` representation to `std::raw`.
- Added doc to `std::raw`.
- Removed `Any::as_void_ptr()` and `Any::as_mut_void_ptr()`
  methods as they are uneccessary now after the removal of
  headers on owned boxes. This reduces the number of virtual calls needed.
- Made the `..Ext` implementations work directly with the repr of
  a trait object.
- Removed `Any`-related traits from the prelude.

- Added bench for `Any`
</content>
</entry>
<entry>
<title>Rewrite channels yet again for upgradeability</title>
<updated>2014-02-12T00:32:00+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2014-01-09T02:31:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=0a6b9219d180503254b55cfd14cdaf072fb35ac4'/>
<id>urn:sha1:0a6b9219d180503254b55cfd14cdaf072fb35ac4</id>
<content type='text'>
This, the Nth rewrite of channels, is not a rewrite of the core logic behind
channels, but rather their API usage. In the past, we had the distinction
between oneshot, stream, and shared channels, but the most recent rewrite
dropped oneshots in favor of streams and shared channels.

This distinction of stream vs shared has shown that it's not quite what we'd
like either, and this moves the `std::comm` module in the direction of "one
channel to rule them all". There now remains only one Chan and one Port.

This new channel is actually a hybrid oneshot/stream/shared channel under the
hood in order to optimize for the use cases in question. Additionally, this also
reduces the cognitive burden of having to choose between a Chan or a SharedChan
in an API.

My simple benchmarks show no reduction in efficiency over the existing channels
today, and a 3x improvement in the oneshot case. I sadly don't have a
pre-last-rewrite compiler to test out the old old oneshots, but I would imagine
that the performance is comparable, but slightly slower (due to atomic reference
counting).

This commit also brings the bonus bugfix to channels that the pending queue of
messages are all dropped when a Port disappears rather then when both the Port
and the Chan disappear.
</content>
</entry>
<entry>
<title>Move replace and swap to std::mem. Get rid of std::util</title>
<updated>2014-02-10T21:21:35+00:00</updated>
<author>
<name>Edward Wang</name>
<email>edward.yu.wang@gmail.com</email>
</author>
<published>2014-01-31T20:35:36+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=e9ff91e9beb6c92d9662242c1090c507b1611c59'/>
<id>urn:sha1:e9ff91e9beb6c92d9662242c1090c507b1611c59</id>
<content type='text'>
Also move Void to std::any, move drop to std::mem and reexport in
prelude.
</content>
</entry>
<entry>
<title>move concurrent stuff from libextra to libsync</title>
<updated>2014-02-05T16:56:04+00:00</updated>
<author>
<name>JeremyLetang</name>
<email>letang.jeremy@gmail.com</email>
</author>
<published>2014-01-30T20:04:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=dd21a51d294ad9843d61b7f2016957a279b0d64f'/>
<id>urn:sha1:dd21a51d294ad9843d61b7f2016957a279b0d64f</id>
<content type='text'>
</content>
</entry>
</feed>
