rust/src
Alex Crichton f09592a5d1 io: Implement process wait timeouts
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
2014-05-13 17:27:42 -07:00
..
compiler-rt@ed112ca1e4
compiletest io: Implement process wait timeouts 2014-05-13 17:27:42 -07:00
doc add a line to the example to clarify semantics 2014-05-13 17:24:08 -07:00
driver
etc std: Rename str::Normalizations to str::Decompositions 2014-05-13 17:24:07 -07:00
gyp@1e46da1000
jemalloc@6a96910f2e
libarena
libbacktrace
libcollections
libcore io: Implement process wait timeouts 2014-05-13 17:27:42 -07:00
libflate
libfmt_macros
libfourcc
libgetopts
libglob
libgraphviz
libgreen
libhexfloat
liblibc io: Implement process wait timeouts 2014-05-13 17:27:42 -07:00
liblog
libnative io: Implement process wait timeouts 2014-05-13 17:27:42 -07:00
libnum Implements Default trait for BigInt and BigUint 2014-05-13 17:24:07 -07:00
librand
libregex
libregex_macros
librustc io: Implement process wait timeouts 2014-05-13 17:27:42 -07:00
librustdoc Touch up and rebase previous commits 2014-05-13 17:24:08 -07:00
librustuv io: Implement process wait timeouts 2014-05-13 17:27:42 -07:00
libsemver
libserialize
libstd io: Implement process wait timeouts 2014-05-13 17:27:42 -07:00
libsync
libsyntax syntax: Improve --pretty normal slightly 2014-05-13 17:24:08 -07:00
libterm
libtest
libtime
liburl
libuuid
libuv@43495892de
libworkcache
llvm@4b4d0533b4
rt
rustllvm rustllvm: Add LLVMRustArrayType 2014-05-13 17:24:08 -07:00
test io: Implement process wait timeouts 2014-05-13 17:27:42 -07:00
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.