f09592a5d1
This implements set_timeout() for std::io::Process which will affect wait() operations on the process. This follows the same pattern as the rest of the timeouts emerging in std::io::net. The implementation was super easy for everything except libnative on unix (backwards from usual!), which required a good bit of signal handling. There's a doc comment explaining the strategy in libnative. Internally, this also required refactoring the "helper thread" implementation used by libnative to allow for an extra helper thread (not just the timer). This is a breaking change in terms of the io::Process API. It is now possible for wait() to fail, and subsequently wait_with_output(). These two functions now return IoResult<T> due to the fact that they can time out. Additionally, the wait_with_output() function has moved from taking `&mut self` to taking `self`. If a timeout occurs while waiting with output, the semantics are undesirable in almost all cases if attempting to re-wait on the process. Equivalent functionality can still be achieved by dealing with the output handles manually. [breaking-change] cc #13523 |
||
---|---|---|
.. | ||
compiler-rt@ed112ca1e4 | ||
compiletest | ||
doc | ||
driver | ||
etc | ||
gyp@1e46da1000 | ||
jemalloc@6a96910f2e | ||
libarena | ||
libbacktrace | ||
libcollections | ||
libcore | ||
libflate | ||
libfmt_macros | ||
libfourcc | ||
libgetopts | ||
libglob | ||
libgraphviz | ||
libgreen | ||
libhexfloat | ||
liblibc | ||
liblog | ||
libnative | ||
libnum | ||
librand | ||
libregex | ||
libregex_macros | ||
librustc | ||
librustdoc | ||
librustuv | ||
libsemver | ||
libserialize | ||
libstd | ||
libsync | ||
libsyntax | ||
libterm | ||
libtest | ||
libtime | ||
liburl | ||
libuuid | ||
libuv@43495892de | ||
libworkcache | ||
llvm@4b4d0533b4 | ||
rt | ||
rustllvm | ||
test | ||
README.md | ||
snapshots.txt |
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 |
libcollections/ |
A collection of useful data structures and containers |
libnum/ |
Extended number support library (complex, rational, etc) |
libtest/ |
Rust's test-runner code |
------------------- | --------------------------------------------------------- |
libarena/ |
The arena (a fast but limited) memory allocator |
libflate/ |
Simple compression library |
libfourcc/ |
Data format identifier library |
libgetopts/ |
Get command-line-options library |
libglob/ |
Unix glob patterns library |
libregex/ |
Regular expressions |
libsemver/ |
Rust's semantic versioning library |
libserialize/ |
Encode-Decode types library |
libsync/ |
Concurrency mechanisms and primitives |
libterm/ |
ANSI color library for terminals |
libtime/ |
Time operations library |
libuuid/ |
UUID's handling code |
------------------- | --------------------------------------------------------- |
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 |
librustuv/ |
Rust libuv support code |
------------------- | --------------------------------------------------------- |
llvm/ |
The LLVM submodule |
rustllvm/ |
LLVM support code |
------------------- | --------------------------------------------------------- |
etc/ |
Scripts, editors support, misc |
NOTE: This list (especially the second part of the table which contains modules and libraries) is highly volatile and subject to change.