# processx 3.8.0
* processx error stacks are better now. They have ANSI hyperlinks for
function calls to their manual pages, and they also print operators
better.
* processx now does not mark standard streams as close-on-exec on Unix,
as this causes problems when calling `system()` from an R subprocess
(https://github.com/r-lib/callr/issues/236).
# processx 3.7.0
* New functions for creating portable FIFOs and Unix socket connections.
See `conn_create_fifo()`, `conn_create_unix_socket()` and
`vignettes/internals.Rmd` for documentation. These functions are currently
experimental.
# processx 3.6.1
* processx now closes file unneeded file descriptors when redirecting
the standard output and error, in the client file.
* processx errors now do not have `rlang_error` and `rlang_trace` classes,
because they are actually not compatible with rlang errors and traces.
# processx 3.6.0
* processx now gives better error messages, and better stack traces.
# processx 3.5.3
* `run()` now sets `stderr` to `NULL` in the result (instead of an empty
string), if the standard error was redirected to the standard output.
This also fixes an error when interrupting a `run()` with a redirected
standard error.
* processx now does not fail if the current working directory contains
a non-ASCII character on Windows, and `getwd()` returns a short path
for it (#313).
# processx 3.5.2
* `run()` now does not truncate stdout and stderr when the output
contains multibyte characters (#298, @infotroph).
* processx now compiles with custom compilers that enable OpenMP (#297).
* processx now avoids a race condition when the working directory is
changed right after starting a process, potentially before the
sub-process is initialized (#300).
* processx now works with non-ASCII path names on non-UTF-8 Unix platforms
(#293).
# processx 3.5.1
* Fix a potential failure when polling curl file descriptors on Windows.
# processx 3.5.0
* You can now append environment variables to the ones set in the current
process if you include `"current"` in the value of `env`, in `run()`
and for `process$new()`: `env = c("current", NEW = "newvalue")` (#232).
* Sub-processes can now inherit the standard input, output and error from
the main R process, by setting the corresponding argument to an empty
string. E.g. `run("ls", stdout = "")` (#72).
* `run()` is now much faster with large standard output or standard
error (#286).
* `run()` can now discard the standard output and error or redirect
them to file(s), instead of collecting them.
* processx now optionally uses the cli package to color error messages
and stack traces, instead of crayon.
# processx 3.4.5
* New options in `pty_options` to set the initial size of the pseudo
terminal.
* Reading the standard output or error now does not crash occasionally
when a `\n` character is at the beginning of the input buffer (#281).
# processx 3.4.4
* processx now works correctly for non-ASCII commands and arguments passed
in the native encoding, on Windows (#261, #262, #263, #264).
* Providing multiple environment variables now works on windows (#267).
# processx 3.4.3
* The supervisor (activated with `supervise = TRUE`) does not crash
on the Windows Subsystem on Linux (WSL) now (#222).
* Fix ABI compatibility for pre and post R 4.0.1 versions. Now CRAN
builds (with R 4.0.2 and later 4.0.x) work well on R 4.0.0.
* Now processx can run commands on UNC paths specified with
forward slashes: `//hostname/...` UNC paths with the usual
back-slashes were always fine (#249).
* The `$as_ps_handle()` method works now better; previously it
sometimes created an invalid `ps::ps_handle` object, if the system
clock has changed (#258).
# processx 3.4.2
* `run()` now does a better job with displaying the spinner on terminals
that buffer the output (#223).
* Error messages are now fully printed after an error. In non-interactive
sessions, the stack trace is printed as well.
* Further improved error messages. Errors from C code now include the
name of the C function, and errors that belong to a process include the
system command (#197).
* processx does not crash now if the process receives a SIGPIPE signal when
trying to write to a pipe, of which the other end has already exited.
* processx now to works better with fork clusters from the parallel
package. See 'Mixing processx and the parallel base R package' in the
README file (#236).
* processx now does no block SIGCHLD by default in the subprocess,
blocking potentially causes zombie sub-subprocesses (#240).
* The `process$wait()` method now does not leak file descriptors on
Unix when interrupted (#141).
Tools to run system processes in the background. It can check if a
background process is running; wait on a background process to finish;
get the exit status of finished processes; kill background processes.
It can read the standard output and error of the processes, using
non-blocking connections. 'processx' can poll a process for standard
output or error, with a timeout. It can also poll several processes at
once.