Unified Parallel and Distributed Processing in R for Everyone
Overview
The purpose of this package is to provide a lightweight and unified Future API for sequential and parallel processing of R expression via futures. The simplest way to evaluate an expression in parallel is to use `x %<-% { expression }` with `plan(multisession)`. This package implements sequential, multicore, multisession, and cluster futures. With these, R expressions can be evaluated on the local machine, in parallel a set of local machines, or distributed on a mix of local and remote machines. Extensions to this package implement additional backends for processing futures via compute cluster schedulers, etc. Because of its unified API, there is no need to modify any code in order switch from sequential on the local machine to, say, distributed processing on a remote compute cluster. Another strength of this package is that global variables and functions are automatically identified and exported as needed, making it straightforward to tweak existing code to make use of futures.
Significant Changes
- Memory use on parallel workers has gone down significantly in some cases. A side effect is also significantly faster processing in those cases. This improvement has an immediate effect on several **future.apply** functions:
future_lapply(),future_sapply(),future_apply(),future_tapply(),future_by(),future_Filter(),future_eapply(),future_mapply(), andfuture_Map().
Bug Fixes
clusterandmultisessionfutures could leave a stray, unclosed worker connection behind if a worker was relaunched. This would eventually result in warnings on "closing unused connection" when the garbage collector ran.
Show all changes in 1.80.0Hide the rest of the changes in 1.80.0
- Explicitly specifying globals as a character vector via attributes
addorignorewould be ignored silently, e.g.globals = structure(c("a", "b"), add = "c"). - A future that uses a global
...together with a global...future.FUN()function, which is what **future.apply** uses, could fail with "cycles in parent chains are not allowed". In R (< 4.5.0), it ended up in an infinite loop. This bug was introduced in **future** 1.40.0 (2025-04-10). - A sequential future that uses a global
...together with a global...future.FUN()function, which is what **future.apply** uses, could permanently change the parent of the function's environment, if that environment inherits from the global environment. This bug was introduced in **future** 1.40.0 (2025-04-10). makeClusterFuture(globals = ...)would result in an future evaluation error.- Futures failed on R (< 4.0.0). This bug was introduced in **future** 1.68.0 (2025-11-17).
- Globals identified automatically (the default) could carry extra, unneeded load that was exported to the parallel workers. This could result in significant overhead in both total memory use and total processing time.
From NEWS.md in the release
Install
Health
- OK13 OK2026-08-05
- NOTE12 OK, 1 NOTE2026-08-01
- OK13 OK2026-05-08
- WARNING12 OK, 1 WARNING2026-05-07
- OK14 OK2026-03-10
Documentation
- Help pages
- 44 (26 internal)
- Examples that run
- 88%15 run in a plain check (2 of them under a condition) · 2 only when donttest examples are enabled (R CMD check --as-cran)
- Exported functions with examples
- 48%
- Documented parameters
- 90%
- Return-value docs
- 94%
- Help pages citing references
- 2%
Also includes 2 demo scripts (run with demo())
Downloads
Repository
- PRs merged (all time)
- 63%
- Median days to close, 50 most recently updated closed issues
- 82
- Median days to close, 50 most recently updated closed PRs
- 1
Stars over time
Forks over time
Issues over time
PRs over time
Commits over time
12 development-tooling and community-health practices detected across 8 families in the upstream repository
Checks run against github.com/futureverse/future on 2026-10-11.
The R CMD check workflow runs on Linux, macOS and Windows, and on R-devel
GitHub Pages site last deployed 2026-10-11
pkgdown site last built 2026-10-11, before release 1.80.0 (2026-10-16)
Show all practicesHide 4 practices
This repository shows signs of AI coding tools.
- Claude Codefirst seen on or before 2026-09-03Commits: at least 1 crediting it in the message
- Claude Opus 51 commit · Sep 2026
Dependencies
Installing future adds 4 packages (2 with compiled code, 690 KB of source tarballs). Heaviest: parallelly 343 KB, digest 231 KB, globals 61 KB.
Show the 48 most downloaded dependentsHide the 48 most downloaded dependents
and 272 more dependents and 246 packages that suggest it on CRAN ↗
Code & Tests
People & History
Pick two releases to compare their code metrics.
- 1.80.0Latest
- 1.76.02026-09-24 · diff ↗
- 1.75.02026-07-20 · diff ↗
- RR 4.6.0 released · 2026-04-24
- 1.70.02026-03-14 · diff ↗
- 1.69.0
- 1.68.02025-11-17 · diff ↗
- 1.67.02025-07-29 · diff ↗
- 1.58.02025-06-05 · diff ↗ ·
added 3 exports
DefaultDeviceMisuseFutureCondition, DefaultDeviceMisuseFutureError, DefaultDeviceMisuseFutureWarning - 1.49.02025-05-09 · diff ↗ ·
removed 1 export
interruptadded 3 exports
FutureCanceledError, FutureLaunchError, cancel - RR 4.5.0 released · 2025-04-11
- 1.40.02025-04-10 · diff ↗ ·
removed 11 exports
ClusterFuture, ConstantFuture, GlobalEnvFutureCondition, GlobalEnvFutureError, GlobalEnvFutureWarning, MulticoreFuture, MultisessionFuture, SequentialFuture, autoStopCluster, makeClusterMPI, makeNodePSOCKadded 25 exports
ClusterFutureBackend, ConnectionMisuseFutureCondition, ConnectionMisuseFutureError, ConnectionMisuseFutureWarning, DeviceMisuseFutureCondition, DeviceMisuseFutureError, DeviceMisuseFutureWarning, FutureBackend, FutureDroppedError, FutureInterruptError, GlobalEnvMisuseFutureCondition, GlobalEnvMisuseFutureError, GlobalEnvMisuseFutureWarning, MulticoreFutureBackend, MultiprocessFutureBackend, MultisessionFutureBackend, SequentialFutureBackend, interrupt, interruptFuture, launchFuture, listFutures, minifuture, reset, stopWorkers, validateFutureGlobals - 1.34.02024-07-29 · diff ↗
- RR 4.4.0 released · 2024-04-24
- 1.33.22024-03-26 · diff ↗
- 1.33.12023-12-22 · diff ↗
Show 62 earlier eventsHide 62 earlier events
- 1.33.0
- RR 4.3.0 released · 2023-04-21
- 1.32.02023-03-07 · diff ↗ ·
added 4 exports
FutureJournalCondition, GlobalEnvFutureCondition, GlobalEnvFutureError, GlobalEnvFutureWarning - 1.31.0
- 1.30.02022-12-16 · diff ↗
- 1.29.0
- 1.28.02022-09-02 · diff ↗
- 1.27.02022-07-22 · diff ↗
- 1.26.12022-05-27 · diff ↗
- 1.25.02022-04-24 · diff ↗
- RR 4.2.0 released · 2022-04-22
- 1.24.02022-02-19 · diff ↗
- 1.23.02021-10-31 · diff ↗
- 1.22.1
- RR 4.1.0 released · 2021-05-18
- 1.21.02020-12-10 · diff ↗ ·
added 4 exports
RngFutureCondition, RngFutureError, RngFutureWarning, nbrOfFreeWorkers - 1.20.1
- 1.19.12020-09-22 · diff ↗
- 1.18.02020-07-09 · diff ↗
- RR 4.0.0 released · 2020-04-24
- 1.17.02020-04-18 · diff ↗
- 1.16.02020-01-16 · diff ↗
- 1.15.1
- 1.15.02019-11-08 · diff ↗
- 1.14.02019-07-02 · diff ↗
- 1.13.02019-05-09 · diff ↗
- RR 3.6.0 released · 2019-04-26
- 1.12.02019-03-08 · diff ↗
- 1.11.1.12019-01-27 · diff ↗
- 1.11.0
- 1.10.0
- 1.9.02018-07-23 · diff ↗ ·
removed 5 exports
FutureEvaluationCondition, FutureEvaluationError, FutureEvaluationMessage, FutureEvaluationWarning, getOutputadded 1 export
%stdout% - 1.8.1
- RR 3.5.0 released · 2018-04-23
- 1.8.0
- 1.7.02018-02-11 · diff ↗ ·
removed 4 exports
EagerFuture, LazyFuture, eager, lazyadded 8 exports
%packages%, FutureCondition, FutureEvaluationCondition, FutureEvaluationError, FutureEvaluationMessage, FutureEvaluationWarning, FutureMessage, FutureWarning - 1.6.22017-10-17 · diff ↗
- 1.6.1
- 1.6.0
- 1.5.0
- RR 3.4.0 released · 2017-04-21
- 1.4.0
- 1.3.02017-02-19 · diff ↗ ·
added 6 exports
%lazy%, %seed%, SequentialFuture, availableWorkers, future_lapply, sequential - 1.2.0
- 1.1.12016-10-11 · diff ↗
- 1.1.0
- 1.0.12016-07-04 · diff ↗
- 1.0.0
- 0.15.0
- 0.14.0
- RR 3.3.0 released · 2016-05-03
- 0.13.02016-04-14 · diff ↗ ·
removed 1 export
injectNextStrategyadded 8 exports
%->%, %<-%, %tweak%, ConstantFuture, backtrace, getExpression, transparent, tweak - 0.12.0
- 0.11.02016-01-20 · diff ↗ ·
added 6 exports
ClusterFuture, MultisessionFuture, cluster, futureCall, injectNextStrategy, multisession - 0.10.0
- 0.9.02015-12-12 · diff ↗
- 0.8.22015-10-14 · diff ↗
- 0.8.12015-10-05 · diff ↗
- 0.8.02015-09-07 · diff ↗
- 0.7.0
- 0.6.02015-06-19
- RR 3.2.0 released · 2015-04-16
Package metadata
- First published
- 2015-06-19
- Total releases
- 66 / 11 yrs
- License
- Apache License (>= 2) · relicensed from LGPL (>= 2.1) in 1.75.0
- Minimum R
- ≥ 3.2.0
- Download size
- 477 KB
Cite
Cite this package
Run in R for the authors' entry:
citation("future")The package provides a citation file, so citation() returns the authors' own entry.
It points to 10.32614/rj-2021-048.
The repository also keeps a CITATION.cff.
Cite the R Observatory
For a number measured here: a download total, a coverage figure, an archival date.
From data release v2026-10-18, which the citation names so these numbers can be found later. More on citing and the projects behind them.