Changelog
Source:NEWS.md
Version 0.4.0 [2026-10-17]
CRAN release: 2026-10-17
Significant Changes
-
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().
New Features
progressify()now unwrapswithCallingHandlers(), 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.
Bug Fixes
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.{ }orlocal({ }), 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()formapply(),Map(),.mapply(),apply(), andtapply()would produce an error onobject '.progressr_progressor' not found.progressify()forfuture_mapply(),future_Map(), andfuture_.mapply()of future.apply would produce an error onlength(idx_FUN) == 1L is not TRUE.progressify()forfuture_apply()andfuture_tapply()of future.apply would produce an error onobject '.progressr_progressor' not found.When used with parallel processing,
progressify()onapply()andtapply(), and the future.apply counterparts, would cause copies of the full input data to be exported to parallel workers.progressify()forfwb()of fwb would produce an error iffwb()argumentRwas not specified.progressify()forpmap()andpmap_*()of purrr, the correspondingfuture_pmap()andfuture_pmap_*()of furrr,pmap_vec()andfuture_pmap_vec()of crossmap, and.mapply()andfuture_.mapply()would produce an error onsubscript out of boundsif there were zero elements to iterate over.progressify()would evaluate the input argument twice, e.g.Xoflapply(),.xofpurrr::map(),nofreplicate(),dataofby(),.lofcrossmap::xmap(),Xofstats::dendrapply(), and the first iteration argument offoreach().
Version 0.2.0 [2026-05-31]
CRAN release: 2026-05-31
New Features
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(), andfuture_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().
Version 0.1.0 (2026-04-01)
CRAN release: 2026-04-07
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.
New Features
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()andprogressify_supported_functions()for programmatically querying which packages and functions are supported byprogressify().
Version 0.0.1 (2025-05-06)
New Features
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().