rust/src
bors 11bc14d724 auto merge of : alexcrichton/rust/chan-changes, r=brson
The user-facing API-level change of this commit is that `SharedChan` is gone and `Chan` now has `clone`. The major parts of this patch are the internals which have changed.

Channels are now internally upgraded from oneshots to streams to shared channels depending on the use case. I've noticed a 3x improvement in the oneshot case and very little slowdown (if any) in the stream/shared case.

This patch is mostly a reorganization of the `std::comm` module, and the large increase in code is from either dispatching to one of 3 impls or the duplication between the stream/shared impl (because they're not entirely separate).

The `comm` module is now divided into `oneshot`, `stream`, `shared`, and `select` modules. Each module contains the implementation for that flavor of channel (or the select implementation for select).

Some notable parts of this patch

* Upgrades are done through a semi-ad-hoc scheme for oneshots and messages for streams
* Upgrades are processed ASAP and have some interesting interactions with select
* send_deferred is gone because I expect the mutex to land before this
* Some of stream/shared is straight-up duplicated, but I like having the distinction between the two modules
* Select got a little worse, but it's still "basically limping along"
* This lumps in the patch of deallocating the queue backlog on packet drop
* I'll rebase this on top of the "more errors from try_recv" patch once it lands (all the infrastructure is here already)

All in all, this shouldn't be merged until the new mutexes are merged (because send_deferred wasn't implemented).

Closes 
2014-02-11 20:16:47 -08:00
..
compiler-rt@d4606f1818 Added compiler-rt submodule. 2014-02-11 13:58:25 -08:00
compiletest Change xfail directives in compiletests to ignore, closes 2014-02-11 18:23:20 +01:00
doc Rewrite channels yet again for upgradeability 2014-02-11 16:32:00 -08:00
driver Remove rustpkg. 2014-02-02 03:08:56 -05:00
etc Change xfail directives in compiletests to ignore, closes 2014-02-11 18:23:20 +01:00
gyp@1e46da1000
libarena Move replace and swap to std::mem. Get rid of std::util 2014-02-11 05:21:35 +08:00
libcollections Includes new add method that uses .clone() for support. 2014-02-11 15:59:33 -05:00
libextra Rewrite channels yet again for upgradeability 2014-02-11 16:32:00 -08:00
libflate Remove Times trait 2014-01-30 14:52:25 +11:00
libfourcc Allow codepoints 128-255 in fourc!! 2014-02-08 23:40:17 -06:00
libgetopts libgetopts -- fix unsafe sharing in closures 2014-02-11 16:55:24 -05:00
libglob libglob -- patch closure where const borrow would have helped 2014-02-11 16:55:22 -05:00
libgreen Rewrite channels yet again for upgradeability 2014-02-11 16:32:00 -08:00
libnative Rewrite channels yet again for upgradeability 2014-02-11 16:32:00 -08:00
libnum Factoring bigint, rational, and complex out of libextra into libnum. 2014-02-11 10:39:15 +01:00
librustc auto merge of : vadimcn/rust/compiler-rt, r=alexcrichton 2014-02-11 18:21:49 -08:00
librustdoc librustdoc -- move closure to clarify scope 2014-02-11 16:55:24 -05:00
librustuv Rewrite channels yet again for upgradeability 2014-02-11 16:32:00 -08:00
libsemver auto merge of : omasanori/rust/small-fixes, r=sfackler 2014-02-08 10:31:33 -08:00
libserialize std: Move byteswap functions to mem 2014-02-09 00:17:41 -08:00
libstd Test fixes and rebase conflicts 2014-02-11 19:58:44 -08:00
libsync Rewrite channels yet again for upgradeability 2014-02-11 16:32:00 -08:00
libsyntax libsyntax -- fix unsafe sharing in closures 2014-02-11 16:55:24 -05:00
libterm Move replace and swap to std::mem. Get rid of std::util 2014-02-11 05:21:35 +08:00
libuuid std: Move byteswap functions to mem 2014-02-09 00:17:41 -08:00
libuv@fd5308383c
llvm@e1dabb48f0 Upgrade LLVM 2014-01-29 23:43:39 -08:00
rt std: Hardcode pthread constants and structures 2014-02-03 12:04:30 -08:00
rustllvm auto merge of : alexcrichton/rust/up-llvm, r=brson 2014-01-29 23:46:26 -08:00
test Rewrite channels yet again for upgradeability 2014-02-11 16:32:00 -08:00
README.md Remove rustpkg. 2014-02-02 03:08:56 -05:00
snapshots.txt Register new snapshots 2014-02-04 00:06:08 -08:00

This is a preliminary version of the Rust compiler, libraries and tools.

Source layout:

Path Description
librustc/ The self-hosted compiler
libstd/ The standard library (imported and linked by default)
libextra/ The "extras" library (slightly more peripheral code)
libgreen/ The M:N runtime library
libnative/ The 1:1 runtime library
libsyntax/ The Rust parser and pretty-printer
------------------- ---------------------------------------------------------
rt/ The runtime system
rt/rust_*.c - Some of the runtime services
rt/vg - Valgrind headers
rt/msvc - MSVC support
rt/sundown - The Markdown library used by rustdoc
------------------- ---------------------------------------------------------
compiletest/ The test runner
test/ Testsuite
test/codegen - Tests for the LLVM IR infrastructure
test/compile-fail - Tests that should fail to compile
test/debug-info - Tests for the debuginfo tool
test/run-fail - Tests that should compile, run and fail
test/run-make - Tests that depend on a Makefile infrastructure
test/run-pass - Tests that should compile, run and succeed
test/bench - Benchmarks and miscellaneous
test/pretty - Pretty-printer tests
test/auxiliary - Dependencies of tests
------------------- ---------------------------------------------------------
librustdoc/ The Rust API documentation tool
libuv/ The libuv submodule
------------------- ---------------------------------------------------------
llvm/ The LLVM submodule
rustllvm/ LLVM support code
------------------- ---------------------------------------------------------
etc/ Scripts, editors support, misc