Changelog
Source:NEWS.md
Version (development version)
New Features
Now ‘callr’ futures can be interrupted using
interrupt()
. An interrupted future can bereset()
and relaunched.A future that failed due to the ‘callr’ worker process was terminated is now considerred interrupted, which for instance means that it can be
reset()
.Now ‘callr’ futures relay
immediateCondition
:s in near real-time, e.g.progression
contdions signals by the progressr package.
Version 0.8.1
CRAN release: 2022-12-14
Bug Fixes
-
run()
forCallrFuture
would update the RNG state, becausecallr::r_bg()
, used to launch the future, does so. This would compromise numeric reproducibility, where thecallr
future backend would not give the same random numbers as other future backends. Nowrun()
launches the future in stealth RNG mode, i.e. givesr_bg()
a semi-random initial seed to work with (by removing.Random.seed
) and then undo the RNG state at the very end.
Version 0.8.0
CRAN release: 2022-04-01
New Features
Now
resolved()
supports early signaling.Now
result()
andvalue()
gives a slightly more informative error message in case the callr process failed with a non-zero exit code.
Version 0.6.1
CRAN release: 2021-05-04
Bug Fixes
- A callr future that produces a large amount of standard error (stderr) could stall forever when collecting its results. The exact reason is unknown but the symptom is currently that the underlying processx process never terminates, resulting in a never-ending wait for the results. Since futures don’t capture stderr in other backends, the workaround for now is to discard all stderr output. Note that messages, warnings, etc. are still captured and relayed.
Version 0.5.0
CRAN release: 2019-09-28
Significant Changes
-
resolved()
forCallrFuture
will launch lazy futures [future (>= 1.15.0)].
Version 0.4.0
CRAN release: 2019-01-07
Version 0.3.1
CRAN release: 2018-07-18
Version 0.3.0
CRAN release: 2018-05-03
New Features
Argument
workers
of future strategies may now also be a function, which is called without argument when the future strategy is set up and used as is. For instance,plan(callr, workers = halfCores)
wherehalfCores <- function() { max(1, round(availableCores() / 2)) }
will use half of the number of available cores. This is useful when using nested future strategies with remote machines.Gathering of results from background processes is made a little bit more robust against slow file systems by retrying a few times before accepting an error as an error.