future_lapply(X) and future_mapply(FUN, X) would drop ‘names’ argument of the returned empty list when length(X) == 0.
Package could set ‘.Random.seed’ to NULL, instead of removing it, which in turn would produce a warning on “‘.Random.seed’ is not an integer vector but of type ‘NULL’, so ignored” when the next random number generated.
Now ‘future.conditions’ defaults to the same as argument ‘conditions’ of future::future(). If the latter changes, this package will follow.
Debug messages are now prepended with a timestamp.
Elements can be processed in random order by setting attribute ‘ordering’ to “random” of argument ‘future.chunk.size’ or ‘future.scheduling’, e.g. future.chunk.size = structure(TRUE, ordering = “random”). This can help improve load balancing in cases where there is a correlation between processing time and ordering of the elements. Note that the order of the returned values is not affected when randomizing the processing order.
Swapped order of arguments ‘future.lazy’ and ‘future.seed’ to be consistent with ditto arguments of future::future().
For list objects ‘X’ where X != as.list(X), future_lapply(X) did not give the same result as lapply(X). Analogously for future_vapply(X).
future_mapply() could drop class attribute on elements iterated over, because .subset() was used internally instead of `[`(). For instance, iteration over Date objects were affected.
Added future_apply(), future_mapply(), and future_Map().
Added argument `future.chunk.size` as an alternative to argument `future.scheduling` for controlling the average number of elements processed per future (“chunk”). In R 3.5.0, the parallel package introduced argument ‘chunk.size’.
The maximum total size of globals allowed (option ‘future.globals.maxSize’) per future (“chunk”) is now scaled up by the number of elements processed by the future (“chunk”) making the protection approximately invariant to the amount of chunking (arguments ‘future.scheduling’ and ‘future.chunk.size’).
future_lapply(X, …) did not search for globals in ‘X’.
future_vapply() did not return the same dimension names as vapply() when FUN.VALUE had no names but FUN(X[]) had.