progressify() for fwb() of fwb (>= 1.0.0) would signal one
fewer progress update than the number of bootstrap replicates (R),
unless called with simple = FALSE or wtype = "multinom". This
bug affected the default call, i.e. fwb(data, statistic) |> progressify().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().