<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/src/libstd/task, branch master</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=master</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2013-12-25T03:59:52+00:00</updated>
<entry>
<title>green: Rip the bandaid off, introduce libgreen</title>
<updated>2013-12-25T03:59:52+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2013-12-13T02:01:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=51abdee5f1ad932671350fdd8a7911fe144d08b8'/>
<id>urn:sha1:51abdee5f1ad932671350fdd8a7911fe144d08b8</id>
<content type='text'>
This extracts everything related to green scheduling from libstd and introduces
a new libgreen crate. This mostly involves deleting most of std::rt and moving
it to libgreen.

Along with the movement of code, this commit rearchitects many functions in the
scheduler in order to adapt to the fact that Local::take now *only* works on a
Task, not a scheduler. This mostly just involved threading the current green
task through in a few locations, but there were one or two spots where things
got hairy.

There are a few repercussions of this commit:

* tube/rc have been removed (the runtime implementation of rc)
* There is no longer a "single threaded" spawning mode for tasks. This is now
  encompassed by 1:1 scheduling + communication. Convenience methods have been
  introduced that are specific to libgreen to assist in the spawning of pools of
  schedulers.
</content>
</entry>
<entry>
<title>std: silence warnings when compiling test.</title>
<updated>2013-12-19T14:26:03+00:00</updated>
<author>
<name>Huon Wilson</name>
<email>dbau.pp+github@gmail.com</email>
</author>
<published>2013-12-19T14:12:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=c00104f36a1dd6aad318d410ffa41b9ec531880a'/>
<id>urn:sha1:c00104f36a1dd6aad318d410ffa41b9ec531880a</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Test fallout from std::comm rewrite</title>
<updated>2013-12-17T06:55:49+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2013-12-16T02:17:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=39a6c9d6376f96cc8b905f00b88d20e42961206c'/>
<id>urn:sha1:39a6c9d6376f96cc8b905f00b88d20e42961206c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Fallout of rewriting std::comm</title>
<updated>2013-12-17T01:47:11+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2013-12-06T02:19:06+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=529e268ab900f1b6e731af64ce2aeecda3555f4e'/>
<id>urn:sha1:529e268ab900f1b6e731af64ce2aeecda3555f4e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>librustuv: RAII-ify `Local::borrow`, and remove some 12 Cells.</title>
<updated>2013-12-10T23:13:12+00:00</updated>
<author>
<name>Patrick Walton</name>
<email>pcwalton@mimiga.net</email>
</author>
<published>2013-12-04T03:18:58+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=7cac9fe76349120ea2373f3ce47a561271b5e8b6'/>
<id>urn:sha1:7cac9fe76349120ea2373f3ce47a561271b5e8b6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>libextra: Another round of de-`Cell`-ing.</title>
<updated>2013-12-10T23:13:12+00:00</updated>
<author>
<name>Patrick Walton</name>
<email>pcwalton@mimiga.net</email>
</author>
<published>2013-12-04T00:44:16+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=786dea207d5b891d37e596e96dd2f84c4cb59f49'/>
<id>urn:sha1:786dea207d5b891d37e596e96dd2f84c4cb59f49</id>
<content type='text'>
34 uses of `Cell` remain.
</content>
</entry>
<entry>
<title>Implement a lock-free work-stealing deque</title>
<updated>2013-11-29T20:19:16+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2013-11-26T17:40:24+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=a70f9d7324a91058d31c1301c4351932880d57e8'/>
<id>urn:sha1:a70f9d7324a91058d31c1301c4351932880d57e8</id>
<content type='text'>
This adds an implementation of the Chase-Lev work-stealing deque to libstd
under std::rt::deque. I've been unable to break the implementation of the deque
itself, and it's not super highly optimized just yet (everything uses a SeqCst
memory ordering).

The major snag in implementing the chase-lev deque is that the buffers used to
store data internally cannot get deallocated back to the OS. In the meantime, a
shared buffer pool (synchronized by a normal mutex) is used to
deallocate/allocate buffers from. This is done in hope of not overcommitting too
much memory. It is in theory possible to eventually free the buffers, but one
must be very careful in doing so.

I was unable to get some good numbers from src/test/bench tests (I don't think
many of them are slamming the work queue that much), but I was able to get some
good numbers from one of my own tests. In a recent rewrite of select::select(),
I found that my implementation was incredibly slow due to contention on the
shared work queue. Upon switching to the parallel deque, I saw the contention
drop to 0 and the runtime go from 1.6s to 0.9s with the most amount of time
spent in libuv awakening the schedulers (plus allocations).

Closes #4877
</content>
</entry>
<entry>
<title>Improve the rt::thread module</title>
<updated>2013-11-27T17:53:48+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2013-11-26T02:08:31+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=5d6dbf3f262fabcb6cb920dd08be6f9d8df75d5c'/>
<id>urn:sha1:5d6dbf3f262fabcb6cb920dd08be6f9d8df75d5c</id>
<content type='text'>
* Added doc comments explaining what all public functionality does.
* Added the ability to spawn a detached thread
* Added the ability for the procs to return a value in 'join'
</content>
</entry>
<entry>
<title>librustc: Make `||` lambdas not infer to `proc`s</title>
<updated>2013-11-26T16:25:27+00:00</updated>
<author>
<name>Patrick Walton</name>
<email>pcwalton@mimiga.net</email>
</author>
<published>2013-11-22T07:36:52+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=749ee53c6d23ae1467568d6e0280a4f59e4e952b'/>
<id>urn:sha1:749ee53c6d23ae1467568d6e0280a4f59e4e952b</id>
<content type='text'>
</content>
</entry>
<entry>
<title>test: Remove non-procedure uses of `do` from compiletest, libstd tests,</title>
<updated>2013-11-26T16:25:27+00:00</updated>
<author>
<name>Patrick Walton</name>
<email>pcwalton@mimiga.net</email>
</author>
<published>2013-11-22T01:23:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=f571e46ddb696d15a8cc912309714ca74f23dcc4'/>
<id>urn:sha1:f571e46ddb696d15a8cc912309714ca74f23dcc4</id>
<content type='text'>
compile-fail tests, run-fail tests, and run-pass tests.
</content>
</entry>
</feed>
