<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/src/libstd/sys/windows/process.rs, branch 1.8.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.8.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.8.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2016-02-10T17:28:48+00:00</updated>
<entry>
<title>std: Push process stdio setup in std::sys</title>
<updated>2016-02-10T17:28:48+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2016-02-04T19:10:37+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=d15db1d392c9126ed5cc766753f08540c08a3626'/>
<id>urn:sha1:d15db1d392c9126ed5cc766753f08540c08a3626</id>
<content type='text'>
Most of this is platform-specific anyway, and we generally have to jump through
fewer hoops to do the equivalent operation on Windows. One benefit for Windows
today is that this new structure avoids an extra `DuplicateHandle` when creating
pipes. For Unix, however, the behavior should be the same.

Note that this is just a pure refactoring, no functionality was added or
removed.
</content>
</entry>
<entry>
<title>std: Lift out Windows' CreateProcess lock a bit</title>
<updated>2016-02-10T17:28:48+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2016-02-04T17:59:47+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=18f9a79c23da8e8920e4c944656b9945f3544337'/>
<id>urn:sha1:18f9a79c23da8e8920e4c944656b9945f3544337</id>
<content type='text'>
The function `CreateProcess` is not itself unsafe to call from many threads, the
article in question is pointing out that handles can be inherited by unintended
child processes. This is basically the same race as the standard Unix
open-then-set-cloexec race.

Since the intention of the lock is to protect children from inheriting
unintended handles, the lock is now lifted out to before the creation of the
child I/O handles (which will all be inheritable). This will ensure that we only
have one process in Rust at least creating inheritable handles at a time,
preventing unintended inheritance to children.
</content>
</entry>
<entry>
<title>std: Rename Stdio::None to Stdio::Null</title>
<updated>2016-02-10T17:28:48+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2016-02-04T17:53:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=b8bd8f3d7c9c8a3187d6c80ab201f66dedee457c'/>
<id>urn:sha1:b8bd8f3d7c9c8a3187d6c80ab201f66dedee457c</id>
<content type='text'>
This better reflects what it's actually doing as we don't actually have an
option for "leave this I/O slot as an empty hole".
</content>
</entry>
<entry>
<title>std: Push Child's exit status to sys::process</title>
<updated>2016-02-10T17:28:48+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2016-02-04T02:09:35+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=627515a7ff4fe12084d7e95969bda307849b4d0e'/>
<id>urn:sha1:627515a7ff4fe12084d7e95969bda307849b4d0e</id>
<content type='text'>
On Unix we have to be careful to not call `waitpid` twice, but we don't have to
be careful on Windows due to the way process handles work there. As a result the
cached `Option&lt;ExitStatus&gt;` is only necessary on Unix, and it's also just an
implementation detail of the Unix module.

At the same time. also update some code in `kill` on Unix to avoid a wonky
waitpid with WNOHANG. This was added in 0e190b9a to solve #13124, but the
`signal(0)` method is not supported any more so there's no need to for this
workaround. I believe that this is no longer necessary as it's not really doing
anything.
</content>
</entry>
<entry>
<title>std: Refactor process spawning on Unix</title>
<updated>2016-02-10T17:28:48+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2015-10-31T18:09:43+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=6c4198469025bf037f59d617c5b75229546ce68a'/>
<id>urn:sha1:6c4198469025bf037f59d617c5b75229546ce68a</id>
<content type='text'>
* Build up the argp/envp pointers while the `Command` is being constructed
  rather than only when `spawn` is called. This will allow better sharing of
  code between fork/exec paths.
* Rename `child_after_fork` to `exec` and have it only perform the exec half of
  the spawning. This also means the return type has changed to `io::Error`
  rather than `!` to represent errors that happen.
</content>
</entry>
<entry>
<title>std: Properly handle interior NULs in std::process</title>
<updated>2016-02-03T15:54:29+00:00</updated>
<author>
<name>Kamal Marhubi</name>
<email>kamal@marhubi.com</email>
</author>
<published>2016-01-15T20:29:45+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=7c64bf1b9b6e8e97ab652a4922f1c0e68ebc77f0'/>
<id>urn:sha1:7c64bf1b9b6e8e97ab652a4922f1c0e68ebc77f0</id>
<content type='text'>
This reports an error at the point of calling `Command::spawn()` or one of
its equivalents.

Fixes https://github.com/rust-lang/rust/issues/30858
Fixes https://github.com/rust-lang/rust/issues/30862
</content>
</entry>
<entry>
<title>Auto merge of #31120 - alexcrichton:attribute-deny-warnings, r=brson</title>
<updated>2016-01-26T22:10:10+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2016-01-26T22:10:10+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4b615854f00ba17ad704155e1d3196c17a6edb62'/>
<id>urn:sha1:4b615854f00ba17ad704155e1d3196c17a6edb62</id>
<content type='text'>
This commit removes the `-D warnings` flag being passed through the makefiles to
all crates to instead be a crate attribute. We want these attributes always
applied for all our standard builds, and this is more amenable to Cargo-based
builds as well.

Note that all `deny(warnings)` attributes are gated with a `cfg(stage0)`
attribute currently to match the same semantics we have today
</content>
</entry>
<entry>
<title>Fix warnings during tests</title>
<updated>2016-01-26T17:29:28+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2016-01-23T07:49:57+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=cb343c33acf0f9833d8d6eb637234acf4321976b'/>
<id>urn:sha1:cb343c33acf0f9833d8d6eb637234acf4321976b</id>
<content type='text'>
The deny(warnings) attribute is now enabled for tests so we need to weed out
these warnings as well.
</content>
</entry>
<entry>
<title>std: Fix some behavior without stdio handles</title>
<updated>2016-01-26T01:48:27+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2016-01-25T05:14:56+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=fee457d3af355f24ef321ea7250e968638f403c8'/>
<id>urn:sha1:fee457d3af355f24ef321ea7250e968638f403c8</id>
<content type='text'>
On all platforms, reading from stdin where the actual stdin isn't present should
return 0 bytes as having been read rather than the entire buffer.

On Windows, handle the case where we're inheriting stdio handles but one of them
isn't present. Currently the behavior is to fail returning an I/O error but
instead this commit corrects it to detecting this situation and propagating the
non-set handle.

Closes #31167
</content>
</entry>
<entry>
<title>std: Migrate to the new libc</title>
<updated>2015-11-10T06:55:50+00:00</updated>
<author>
<name>Alex Crichton</name>
<email>alex@alexcrichton.com</email>
</author>
<published>2015-11-03T00:23:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3d28b8b98e6e4f55ef4ecd8babf0a050f48a3d11'/>
<id>urn:sha1:3d28b8b98e6e4f55ef4ecd8babf0a050f48a3d11</id>
<content type='text'>
* Delete `sys::unix::{c, sync}` as these are now all folded into libc itself
* Update all references to use `libc` as a result.
* Update all references to the new flat namespace.
* Moves all windows bindings into sys::c
</content>
</entry>
</feed>
