progressify() on S3 and S4 generic function calls has
been redesigned completely. For example, it now avoids evaluating the
left-hand side (LHS) twice,
e.g. summary(fit) |> progressify().progressify() now unwraps
withCallingHandlers(), e.g.
withCallingHandlers(lapply(xs, fcn), warning = ...) |> progressify().
Much more informative error messages when trying to progressify
an S3 or S4 generic function call that dispatches to a method that is
not supported, e.g. summary(fit) |> progressify(), and
when trying to progressify a function that is not part of a
package.
Error messages produced by progressify() now include
the progressify version.
progressify() on an S3 or S4 generic function call,
where the first argument is not a variable,
e.g. summary(get_fit()) |> progressify(), would evaluate
that argument twice. Now it is evaluated only once.
progressify() on an expression that is not a
function call, e.g. { } or local({ }), would
produce an obscure error on “invalid type/length (symbol/1) in vector
allocation”. Now it gives an informative error explaining that the
expression is not a function call.
progressify() for mapply(),
Map(), .mapply(), apply(), and
tapply() would produce an error on
object '.progressr_progressor' not found.
progressify() for future_mapply(),
future_Map(), and future_.mapply() of
future.apply would produce an error on
length(idx_FUN) == 1L is not TRUE.
progressify() for future_apply() and
future_tapply() of future.apply would
produce an error on
object '.progressr_progressor' not found.
When used with parallel processing, progressify() on
apply() and tapply(), and the
future.apply counterparts, would cause copies of the
full input data to be exported to parallel workers.
progressify() for fwb() of
fwb would produce an error if fwb()
argument R was not specified.
progressify() for pmap() and
pmap_*() of purrr, the corresponding
future_pmap() and future_pmap_*() of
furrr, pmap_vec() and
future_pmap_vec() of crossmap, and
.mapply() and future_.mapply() would produce
an error on subscript out of bounds if there were zero
elements to iterate over.
progressify() would evaluate the input argument
twice, e.g. X of lapply(), .x of
purrr::map(), n of replicate(),
data of by(), .l of
crossmap::xmap(), X of
stats::dendrapply(), and the first iteration argument of
foreach().
Add support for domain-specific CRAN package
boot,
e.g. res <- boot::boot(data, statistic, R = 100) |> progressify().
Add support for crossmap future_*()
variants,
e.g. y <- crossmap::future_xmap(xs, fcn) |> progressify().
Add support for furrr 0.4.0 *_vec()
variants: future_map_vec(), future_map2_vec(),
future_pmap_vec(), and
future_imap_vec().
Add support for domain-specific CRAN package
fwb,
e.g. res <- fwb::fwb(data, statistic, R = 100) |> progressify().
Add support for domain-specific CRAN package
lme4,
e.g. res <- lme4::bootMer(fit, statistic, nsim = 100) |> progressify().
Add support for purrr::imap_vec().
Add support for domain-specific CRAN package
sandwich,
e.g. v <- sandwich::vcovBS(fit) |> progressify().
Add support for domain-specific CRAN package
SimDesign,
e.g. res <- SimDesign::runSimulation(design, replications, generate, analyse, summarise) |> progressify().
This is a retake of the previous, proof-of-concept version. Starting with this version, we are now borrowing from the futurize package, which implements closely related “parallelization” transpilers.
Add support for map-reduce CRAN package
future.apply,
e.g. y <- future.apply::future_lapply(xs, fcn) |> progressify().
Add support for CRAN package crossmap,
e.g. y <- crossmap::xmap(xs, fcn) |> progressify().
Add support for purrr,
e.g. y <- purrr::map(xs, fcn) |> progressify().
Add support for map-reduce CRAN package furrr,
e.g. y <- furrr::future_map(xs, fcn) |> progressify().
Add support for map-reduce CRAN package foreach,
e.g. y <- foreach(x = xs) %do% { fcn(x) } |> progressify().
Add support for map-reduce CRAN package
doFuture,
e.g. y <- foreach(x = xs) %dofuture% { fcn(x) } |> progressify().
Add support for plyr,
e.g. y <- plyr::llply(xs, fcn) |> progressify().
Add support for replicate(),
e.g. y <- replicate(n, rnorm(10)) |> progressify().
Add support for base-R package stats,
e.g. d2 <- dendrapply(d, fcn) |> progressify().
Add support for domain-specific CRAN package
partykit,
e.g. y <- partykit::cforest(formula, data, ntree = 50L) |> progressify().
Add progressify_supported_packages() and
progressify_supported_functions() for programmatically
querying which packages and functions are supported by
progressify().
The progressify() function makes common map-reduce
functions report on progress. Progress notifications are relayed, among
other things.
Add support for base R,
e.g. y <- lapply(xs, fcn) |> progressify().
Add support for purrr,
e.g. y <- map(xs, fcn) |> progressify().
Add support for foreach,
e.g. y <- foreach(x = xs) %do% { fcn(x) } |> progressify().
Add support for plyr,
e.g. y <- llply(xs, fcn) |> progressify().