NEWS.md
run()
for CallrFuture
would update the RNG state, because callr::r_bg()
, used to launch the future, does so. This would compromise numeric reproducibility, where the callr
future backend would not give the same random numbers as other future backends. Now run()
launches the future in stealth RNG mode, i.e. gives r_bg()
a semi-random initial seed to work with (by removing .Random.seed
) and then undo the RNG state at the very end.Now resolved()
supports early signaling.
Now result()
and value()
gives a slightly more informative error message in case the callr process failed with a non-zero exit code.
nbrOfFreeWorkers()
.resolved()
for CallrFuture
will launch lazy futures [future (>= 1.15.0)].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)
where halfCores <- 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.