<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/library/std/src/sys/unix/process/process_unix.rs, branch 1.69.0</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=1.69.0</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=1.69.0'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2023-02-28T14:59:53+00:00</updated>
<entry>
<title>Retry to spawn/fork up to 3 times when it failed because of an interruption</title>
<updated>2023-02-28T14:59:53+00:00</updated>
<author>
<name>Florian Bartels</name>
<email>Florian.Bartels@elektrobit.com</email>
</author>
<published>2023-02-10T14:27:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=cef9d4cbc1809bc29dee105fc8593d3e569155d7'/>
<id>urn:sha1:cef9d4cbc1809bc29dee105fc8593d3e569155d7</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add QNX Neutrino support to libstd</title>
<updated>2023-02-28T14:59:47+00:00</updated>
<author>
<name>Florian Bartels</name>
<email>Florian.Bartels@elektrobit.com</email>
</author>
<published>2023-01-10T09:44:05+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3ce2cd059f8f7c69d9e1fe26b95cec2bfd3c98a7'/>
<id>urn:sha1:3ce2cd059f8f7c69d9e1fe26b95cec2bfd3c98a7</id>
<content type='text'>
Co-authored-by: gh-tr &lt;troach@qnx.com&gt;
</content>
</entry>
<entry>
<title>signal update string representation for haiku.</title>
<updated>2023-01-18T23:06:59+00:00</updated>
<author>
<name>David Carlier</name>
<email>devnexen@gmail.com</email>
</author>
<published>2023-01-18T23:06:59+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=ae9e66bafbe83b3c32b6c08027a667961cfdc8fe'/>
<id>urn:sha1:ae9e66bafbe83b3c32b6c08027a667961cfdc8fe</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Remove various double spaces in source comments.</title>
<updated>2023-01-14T16:22:04+00:00</updated>
<author>
<name>André Vennberg</name>
<email>andre.vennberg@gmail.com</email>
</author>
<published>2023-01-14T15:33:11+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=0b35f448f8e9f39ed6fc1c494eeb331afba513bc'/>
<id>urn:sha1:0b35f448f8e9f39ed6fc1c494eeb331afba513bc</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rollup merge of #105458 - Ayush1325:blocking_spawn, r=Mark-Simulacrum</title>
<updated>2022-12-17T22:44:26+00:00</updated>
<author>
<name>Matthias Krüger</name>
<email>matthias.krueger@famsik.de</email>
</author>
<published>2022-12-17T22:44:26+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=6d1cdcaee52e357dfb3500091bdd18a2e0c763ff'/>
<id>urn:sha1:6d1cdcaee52e357dfb3500091bdd18a2e0c763ff</id>
<content type='text'>
Allow blocking `Command::output`

### Problem
Currently, `Command::output` is internally implemented using `Command::spawn`. This is problematic because some targets (like UEFI) do not actually support multitasking and thus block while the program is executing. This coupling does not make much sense as `Command::output` is supposed to block until the execution is complete anyway and thus does not need to rely on a non-blocking `Child` or any other intermediate.

### Solution
This PR moves the implementation of `Command::output` to `std::sys`. This means targets can choose to implement only `Command::output` without having to implement `Command::spawn`.

### Additional Information

This was originally conceived when working on https://github.com/rust-lang/rust/pull/100316. Currently, the only target I know about that will benefit from this change is UEFI.

This PR can also be used to implement more efficient `Command::output` since the intermediate `Process` is not actually needed anymore, but that is outside the scope of this PR.

Since this is not a public API change, I'm not sure if an RFC is needed or not.
</content>
</entry>
<entry>
<title>explain mem::forget(env_lock) in fork/exec</title>
<updated>2022-12-12T20:02:49+00:00</updated>
<author>
<name>Ralf Jung</name>
<email>post@ralfj.de</email>
</author>
<published>2022-12-12T08:49:42+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=3465d5fb168e99fd3a16a6b525feffbeca43647e'/>
<id>urn:sha1:3465d5fb168e99fd3a16a6b525feffbeca43647e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Implement blocking output</title>
<updated>2022-12-11T04:51:40+00:00</updated>
<author>
<name>Ayush Singh</name>
<email>ayushsingh1325@gmail.com</email>
</author>
<published>2022-12-08T12:52:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=a94793d8d17e4cfe2e727c30c36e174b8d6b6ee3'/>
<id>urn:sha1:a94793d8d17e4cfe2e727c30c36e174b8d6b6ee3</id>
<content type='text'>
This allows decoupling `Command::spawn` and `Command::output`. This is
useful for targets which do support launching programs in blocking mode
but do not support multitasking (Eg: UEFI).

This was originally conceived when working on https://github.com/rust-lang/rust/pull/100316

Signed-off-by: Ayush Singh &lt;ayushsingh1325@gmail.com&gt;
</content>
</entry>
<entry>
<title>Change process spawning to inherit the parent's signal mask by default</title>
<updated>2022-10-20T21:53:38+00:00</updated>
<author>
<name>Rain</name>
<email>rain@sunshowers.io</email>
</author>
<published>2022-09-23T05:48:14+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=a52c79e859142c1cd5c0c5bdb73f16b754e1b98f'/>
<id>urn:sha1:a52c79e859142c1cd5c0c5bdb73f16b754e1b98f</id>
<content type='text'>
Previously, the signal mask is always reset when a child process is
started. This breaks tools like `nohup` which expect `SIGHUP` to be
blocked.

With this change, the default behavior changes to inherit the signal mask.

This also changes the signal disposition for `SIGPIPE` to only be
changed if the `#[unix_sigpipe]` attribute isn't set.
</content>
</entry>
<entry>
<title>Remove use of `io::ErrorKind::Other` in std</title>
<updated>2022-09-20T00:56:23+00:00</updated>
<author>
<name>Patiga</name>
<email>dev@patiga.eu</email>
</author>
<published>2022-09-20T00:56:23+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=04c108711e5be450b87ec2bf9cd628033972cd69'/>
<id>urn:sha1:04c108711e5be450b87ec2bf9cd628033972cd69</id>
<content type='text'>
The documentation states that this `ErrorKind` is not used by the
standard library. Instead, `io::ErrorKind::Uncategorized` should be
used.
</content>
</entry>
<entry>
<title>Use posix_spawn for absolute paths on macOS</title>
<updated>2022-08-29T02:31:09+00:00</updated>
<author>
<name>Rain</name>
<email>rain@sunshowers.io</email>
</author>
<published>2022-08-20T01:24:21+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=bd8b4b9c1588f0c681162ead34cc91b3f9a52bfc'/>
<id>urn:sha1:bd8b4b9c1588f0c681162ead34cc91b3f9a52bfc</id>
<content type='text'>
Currently, on macOS, Rust never uses the fast posix_spawn path if a
directory change is requested due to a bug in Apple's libc. However, the
bug is only triggered if the program is a relative path.

This PR makes it so that the fast path continues to work if the program
is an absolute path or a lone filename.

This was an alternative proposed in
https://github.com/rust-lang/rust/pull/80537#issue-776674009, and it
makes a measurable performance difference in some of my code that spawns
thousands of processes.
</content>
</entry>
</feed>
