# callr 3.7.3

* Errors from callr now include the standard output (in `$stdout`) and
  standard error (in `stderr`) again. The standard output and error are also
  printed on error in non-interactive sessions, and a note is printed about
  them in interactive sessions.

# callr 3.7.2

* New function `add_hook()` to hook into the callr process startup and
  options. This is for experts and it is also currently experimental
  (#203, @klmr).

# callr 3.7.1

* When copying existing startup files, an additional newline is appended to
  protect against a missing newline at the end of the file. This would
  cause R ignore that line (#205).

* Serialization of objects passed between sessions now uses `compress=FALSE`
  by default. The default can be changed by setting the
  `callr.compress_transport` option (#223, @dfalbel).

* We have revamped callr's error objects, with lots of improvements to the
  output.

# callr 3.7.0

* Reporting errors is much faster now (#185).

* The `user_profile` option of `r_vanilla()` defaults to `FALSE` now (#194).

* It is now possible to set R environment variables (`R_ENVIRON_USER`,
  `R_PROFILE_USER`, etc.) via the `env` argument (#193).

# callr 3.6.0

* callr now supports starting an R process with a different architecture,
  so on Windows 64-bit R can start a 32-bit R background process, and
  vice-versa (#95).

* callr now handles symbolic arguments properly, and does not evaluate them.
  E.g. `callr::r(function(x) x, list(quote(foobar)))` works now (#175).

* `callr::r_session` does not leak file descriptors now in the sub-process
  (#184).

# callr 3.5.1

* `callr::r_session` now handles large messages from the subprocess
  well (#168).

# callr 3.5.0

* callr can now pass the environment of the function to the subprocess,
  optionally. This makes it easier to call an internal function of a
  package in a subprocess. See the `package` argument of `r()`, `r_bg()`,
  `r_session$run()`, etc. (#147).

# callr 3.4.4

* An `r_session` now exits if the load hook errors. This generates an error
  if the session is started with `wait = TRUE`. For `wait = FALSE` the
  first `$read()` operation will return with an error (#162).

# callr 3.4.3

* `default_repos()` now returns a list if `getOption("repos")` is a list,
  and a vector otherwise, on R 4.x.y as well.

# callr 3.4.2

* Improved error messages. Error messages are now fully printed after
  an error. In non-interactive sessions, the stack trace is printed as well.

# callr 3.4.1

* callr is now more careful when loading the local `.Rprofile` in the
  subprocess. This fixes issues with packrat and renv that use `.Rprofile`
  for setup (#139).

* callr functions fail early if environment file is missing (#123, @jdblischak)

# callr 3.4.0

* All callr functions and background processes properly clean up
  temporary files now (#104).

* callr now uses a more principled setup for the library path, and
  restores the related environment variables in the child process.
  This is a **breaking change** if you relied on having the library set
  in a `system()` subprocess of the callr subprocess (#114).

* Better printing of `rlang_error`s that happened in the subprocess.

* The stacking of error objects is slightly different now, as we keep the
  unmodified error from the subprocess in `$parent$error`.

* callr now loads `.Rprofile` files from the current working directory
  by default. This works better with packrat, renv, and other software
  that relies on a local profile for initialization (#131).

# callr 3.3.2

No user visible changes in this version.

# callr 3.3.1

* `r_session` now avoids creating `data` and `env` objects in the global
  environment of the subprocess.

* New `$debug()` method for `r_session` to inspect the dumped frames
  in the subprocess, after an error.

# callr 3.3.0

* callr now sets the `.Last.error` variable for every uncaught callr
  error to the error condition, and also sets `.Last.error.trace` to its
  stack trace. If the error originates in the subprocess, then `.Last.error`
  is a hierarchical error object, and `.Last.error.trace` merges the
  traces from the two processes. See the `README.md` for an example.

* New `$traceback()` method for `r_session`, to run `traceback()` in the
  subprocess, after an error.

* A callr subprocess now does not load any R packages by default.

* New vignette, that showcases `r_session`.

# callr 3.2.0

* `r()`, `rcmd()` and `rscript()` can now redirect the standard error of
  the subprocess its standard output. This allows to keep them correctly
  interleaved. For this, you need to either set the `stderr` argument to
  the special string `"2>&1"`, or to the same output file as specified
  for `stdout`.

* `r()`, `rcmd()` and `rscript()` now pass `...` arguments to
  `processx::run()`. `r_bg()` and `rcmd_bg()` pass `...` arguments to
  the `processx::process` constructor. For `r_process`, `rcmd_process`
  and `rscript_process` extra arguments can be specified as `options$extra`,
  these are also passed to the `processx::process` constructor (#100).

# callr 3.1.1

* `r()`, `r_bg()`, etc. now handle messages from the cliapp package
  properly. They used to make the R session exit.

* Better default for the `repos` option in callr subprocesses. callr no
  longer creates duplicate "CRAN" entries. By default the new
  `default_repos()` function is used to set `repos` in the subprocess.

# callr 3.1.0

* New `rscript()` function and `rscript_process` class to execute
  R scripts via `Rscript` (#40, #81).

* Library paths are now correctly set up for `system()` (and similar)
  calls from the callr subprocesses (#83, #84).

* Pass `options("repos")` to the child process as is, without checking.
  Closes #82.

* `r_session$run_with_output()` now returns an S3 object with class
  `callr_session_result`.

* `r_session$run*()` handle interrupts properly. It tries to interrupt
  the background process fist, kills it if it is not interruptible,
  and then re-throws the interrupt condition, going back to the top level
  prompt if the re-thrown condition is uncaught.

# callr 3.0.0

* New `r_session` class: a background R session you can send commands to
  (#56).

* Rewrote passing the library path to the subprocess (#73, #75)

* Retain names of the `repos` option (#67, @jennybc)

# callr 2.0.4

* pkgdown web site at https://callr.r-lib.org  (#52, #53).

* callr users `.Renviron` files now (and `R_ENVIRON_USER` as well),
  but overrides the library path, as requested in `r()`, etc. (#30).

* callr now handles the case when the subprocess calls `quit()`.

* callr now uses the processx package, instead of embedded code,
  to create and control processes.

# callr 2.0.3

* The default behavior on error can be set now with the `callr.error`
option.

* Better error message if the child R process crashes or gets killed. (#41)

* `r_bg` and `rcmd_bg` now have the `supervise` option (#45).

# callr 2.0.2

* Fix a bug with R-devel, caused by the change on 2018-02-08:
  https://github.com/wch/r-source/commit/924582943706100e88a11d6bb0585d25779c91f5
  #37, #38

* Fix a race condition on Windows, when creating named pipes for `stdout`
  or `stderr`. The client sometimes didn't wait for the server, and callr
  failed with ERROR_PIPE_BUSY (231, All pipe instances are busy).

# callr 2.0.1

* Fix compilation issues on Solaris

* Fix a test failure on macOS

# callr 2.0.0

* Run R or `R CMD` in the background, see `r_bg()`, `rcmd_bg()`,
  and also `r_process` and `rcmd_process`

* The defaults for `r()` are safer now, the match the defaults of
  `r_safe()`. `r_safe()` is kept for compatibility. `r_copycat()` has the
  old `r()` defaults.

* The defaults for `rcmd()` are safer now, the match the defaults of
`rcmd_safe()`. `rcmd_safe()` is kept for compatibility. `rcmd_copycat()`
  has the old `rcmd()` defaults.

* Support block callbacks, in addition to line callbacks. Block callbacks
  are called for arbitrary chunks of output, even without a newline

* Add `spinner` argument to show a spinner in `r()` or `rcmd()`

* Support timeouts, via the `timeout` argument

* Fix bug when `stdout` and `stderr` are redirected to the same file

* `rcmd_safe_env()` to allow extending the environment variables set in
  safe mode

* `rcmd()` gets a `fail_on_status` argument

* `rcmd()` gets an `echo` argument to potentially show the command to be
  run on the screen (#15)

* `rcmd()` gets a `wd` argument to set the working directory

# callr 1.0.0

First public release.
