{"id":50721700,"url":"https://github.com/futureverse/progressify","last_synced_at":"2026-06-10T00:30:45.720Z","repository":{"id":349806524,"uuid":"979151312","full_name":"futureverse/progressify","owner":"futureverse","description":"三 progressify: Progress Updates Everywhere","archived":false,"fork":false,"pushed_at":"2026-05-31T19:37:17.000Z","size":1596,"stargazers_count":3,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"develop","last_synced_at":"2026-05-31T20:06:32.644Z","etag":null,"topics":["futureverse","package","progress","r","transpiler"],"latest_commit_sha":null,"homepage":"https://progressify.futureverse.org/","language":"R","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/futureverse.png","metadata":{"files":{"readme":"README.md","changelog":"NEWS.md","contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-05-07T04:35:16.000Z","updated_at":"2026-05-31T19:36:18.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/futureverse/progressify","commit_stats":null,"previous_names":["futureverse/progressify"],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/futureverse/progressify","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futureverse%2Fprogressify","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futureverse%2Fprogressify/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futureverse%2Fprogressify/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futureverse%2Fprogressify/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/futureverse","download_url":"https://codeload.github.com/futureverse/progressify/tar.gz/refs/heads/develop","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/futureverse%2Fprogressify/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34132030,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-09T02:00:06.510Z","response_time":63,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["futureverse","package","progress","r","transpiler"],"created_at":"2026-06-10T00:30:44.632Z","updated_at":"2026-06-10T00:30:45.714Z","avatar_url":"https://github.com/futureverse.png","language":"R","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv id=\"badges\"\u003e\u003c!-- pkgdown markup --\u003e\n\u003ca href=\"https://CRAN.R-project.org/web/checks/check_results_progressify.html\"\u003e\u003cimg border=\"0\" src=\"https://www.r-pkg.org/badges/version/progressify\" alt=\"CRAN check status\"/\u003e\u003c/a\u003e \u003ca href=\"https://github.com/futureverse/progressify/actions?query=workflow%3AR-CMD-check\"\u003e\u003cimg border=\"0\" src=\"https://github.com/futureverse/progressify/actions/workflows/R-CMD-check.yaml/badge.svg?branch=develop\" alt=\"R CMD check status\"/\u003e\u003c/a\u003e     \u003ca href=\"https://app.codecov.io/gh/futureverse/progressify\"\u003e\u003cimg border=\"0\" src=\"https://codecov.io/gh/futureverse/progressify/branch/develop/graph/badge.svg\" alt=\"Coverage Status\"/\u003e\u003c/a\u003e \n\u003c/div\u003e\n\n# progressify: Progress Reporting of Common Functions via One Magic Function \u003cimg src=\"man/figures/progressify-logo.png\" alt=\"The hexlogo for the 'progressify' package\" style=\"width: 120px; float: right; margin-right: 1ex; margin-left: 1ex;\"/\u003e\n\n## TL;DR \n\nThe **progressify** package makes it extremely simple to report\nprogress updates for your existing map-reduce calls. All you need to\nknow is that there is a single function called `progressify()` that\nwill take care of everything, e.g.\n\n```r\ny \u003c- lapply(x, fcn) |\u003e progressify()\ny \u003c- map(x, fcn) |\u003e progressify()\ny \u003c- foreach(x = xs) %do% { fcn(x) } |\u003e progressify()\nres \u003c- boot::boot(data, statistic, R = 100) |\u003e progressify()\n```\n\nThe `progressify()` function signals progress updates via the\n**[progressr]** package, meaning you can choose among the **[supported\nprogressr handlers]** on how to render progress updates, whether it be\nvia the terminal, a progress bar, or even a sound. The **progressify**\npackage has only one hard dependency - the **[progressr]** package.\n\nIn addition to getting progress updates via **progressr**,\nby using `progressify()` you also get access to all the benefits that\ncome with **progressr**. Notably, you have full control over when\nand how progress is reported, and it works seamlessly across\ndifferent environments and frontends.\n\n\n## Supported map-reduce packages\n\nThe **progressify** package supports transpilation of functions from\nmultiple packages. The table below summarizes the supported map-reduce\nfunctions. To programmatically see which packages are currently\nsupported, use:\n\n```r\nprogressify_supported_packages()\n```\n\nTo see which functions are supported for a specific package, use:\n\n```r\nprogressify_supported_functions(\"purrr\")\n```\n\n| Package            | Functions                                                                                                          |\n|--------------------|--------------------------------------------------------------------------------------------------------------------|\n| **base**           | `apply()`, `by()`, `eapply()`, `lapply()`, `.mapply()`, `mapply()`, `Map()`, `replicate()`, `sapply()`, `tapply()`, `vapply()` |\n| **stats**          | `dendrapply()`                                                                                             |\n| **[future.apply]** | `future_apply()`, `future_by()`, `future_eapply()`, `future_lapply()`, `future_.mapply()`, `future_mapply()`, `future_Map()`, `future_replicate()`, `future_sapply()`, `future_tapply()`, `future_vapply()` |\n| **[purrr]**        | `map()` and variants, `walk()` and variants, `map2()` and variants, `walk2()` and variants, `pmap()` and variants, `pwalk()`, `imap()` and variants, `modify()`, `modify2()`, `imodify()` |\n| **[crossmap]**     | `xmap()` and variants, `xwalk()`, `map_vec()`, `map2_vec()`, `pmap_vec()`, `imap_vec()`, plus `future_*()` variants |\n| **[furrr]**        | `future_map()` and variants, `future_walk()` and variants, `future_map2()` and variants, `future_walk2()` and variants, `future_pmap()` and variants, `future_pwalk()`, `future_imap()` and variants, `future_modify()`, `future_modify2()`, `future_imodify()` and variants |\n| **[foreach]**      | `%do%`, `%dopar%`                                                                                                  |\n| **[doFuture]**     | `%dofuture%`                                                                                                       |\n| **[plyr]**         | `llply()` and variants, `mlply()` and variants, `rdply()`, `rlply()`, `raply()`, `r_ply()` |\n_Table 1: Map-reduce functions currently supported by `progressify()` for progress reporting._\n\nHere are some examples:\n\n```r\nlibrary(progressify)\nhandlers(global = TRUE)\n\nxs \u003c- 1:10\nys \u003c- lapply(xs, function(x) { Sys.sleep(0.1); sqrt(x) }) |\u003e progressify()\n\nd \u003c- as.dendrogram(hclust(dist(USArrests)))\nd2 \u003c- dendrapply(d, function(n) { Sys.sleep(0.01); n }) |\u003e progressify()\n\nxs \u003c- 1:10\nys \u003c- purrr::map(xs, function(x) { Sys.sleep(0.1); sqrt(x) }) |\u003e progressify()\n\nxs \u003c- list(1:5, 1:5)\nys \u003c- crossmap::xmap(xs, ~ .y * .x) |\u003e progressify()\n\nlibrary(foreach)\nxs \u003c- 1:10\nys \u003c- foreach(x = xs) %do% { Sys.sleep(0.1); sqrt(x) } |\u003e progressify()\n\nxs \u003c- 1:10\nys \u003c- plyr::llply(xs, function(x) { Sys.sleep(0.1); sqrt(x) }) |\u003e progressify()\n\n```\n\n\n## Supported domain-specific packages\n\nYou can also progressify calls from a growing set of domain-specific\nCRAN packages that have optional built-in support for\nparallelization.\n\n### CRAN packages with support for progressify\n\n| Package                    | Functions                                                                    |\n|----------------------------|------------------------------------------------------------------------------|\n| **[boot]**                 | `boot()`, `censboot()`, `tsboot()`                                           |\n| **[fwb]**                  | `fwb()`                                                                      |\n| **[lme4]**                 | `bootMer()`                                                                  |\n| **[partykit]**             | `cforest()`                                                                  |\n| **[sandwich]**             | `vcovBS()`, `vcovJK()`                                                       |\n| **[SimDesign]**            | `runSimulation()`                                                            |\n\n_Table 2: CRAN packages with domain-specific functions currently supported by `progressify()` for progress reporting._\n\nHere are some examples:\n\n```r\nres \u003c- boot::boot(data, statistic, R = 100) |\u003e progressify()\n\nres \u003c- fwb::fwb(data, statistic, R = 100) |\u003e progressify()\n\nres \u003c- lme4::bootMer(fit, statistic, nsim = 100) |\u003e progressify()\n\nforest \u003c- partykit::cforest(Survived ~ ., data = as.data.frame(Titanic), ntree = 50L) |\u003e progressify()\n\nv \u003c- sandwich::vcovBS(fit) |\u003e progressify()\n\nres \u003c- SimDesign::runSimulation(design, replications, generate, analyse, summarise) |\u003e progressify()\n```\n\n\n## Compatible with futurize\n\nThe **progressify** package is compatible with the **[futurize]**\npackage, which parallelizes code via the [futureverse]. You can\ncombine the two, in either order, to get both progress reporting and\nparallelization:\n\n```r\nlibrary(progressify)\nhandlers(global = TRUE)\n\nlibrary(futurize)\nplan(multisession)\n\nxs \u003c- 1:100\nys \u003c- lapply(xs, slow_fcn) |\u003e progressify() |\u003e futurize()\n\nys \u003c- purrr::map(xs, slow_fcn) |\u003e progressify() |\u003e futurize()\n\nlibrary(foreach)\nys \u003c- foreach(x = xs) %do% { slow_fcn(x) } |\u003e progressify() |\u003e futurize()\n\nys \u003c- plyr::llply(xs, slow_fcn) |\u003e progressify() |\u003e futurize()\n\nforest \u003c- partykit::cforest(dist ~ speed, data = cars, ntree = 50L) |\u003e progressify() |\u003e futurize()\n```\n\n\n[futureverse]: https://www.futureverse.org\n[boot]: https://cran.r-project.org/package=boot\n[crossmap]: https://cran.r-project.org/package=crossmap\n[doFuture]: https://doFuture.futureverse.org\n[foreach]: https://cran.r-project.org/package=foreach\n[future.apply]: https://future.apply.futureverse.org\n[futurize]: https://futurize.futureverse.org\n[furrr]: https://furrr.futureverse.org\n[fwb]: https://cran.r-project.org/package=fwb\n[lme4]: https://cran.r-project.org/package=lme4\n[partykit]: https://cran.r-project.org/package=partykit\n[plyr]: https://cran.r-project.org/package=plyr\n[progressr]: https://progressr.futureverse.org\n[purrr]: https://cran.r-project.org/package=purrr\n[sandwich]: https://cran.r-project.org/package=sandwich\n[SimDesign]: https://cran.r-project.org/package=SimDesign\n[supported progressr handlers]: https://progressr.futureverse.org/articles/progressr-11-handlers.html\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffutureverse%2Fprogressify","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffutureverse%2Fprogressify","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffutureverse%2Fprogressify/lists"}