Skip to contents

The future package comes with built-in future backends that leverage the parallel package part of R itself. In addition to these backends, others exist in package extensions, e.g. future.callr, future.mirai, and future.batchtools. Below is an overview of the most common backends that you as an end-user can chose from.

Package / Backend Features How futures are evaluated
future
sequential
📶
♻️
sequentially and in the current R process; default
future
multisession
📶
♻️
parallelly via background R sessions on current machine
future
cluster
📶
♻️*
parallelly in external R sessions on current, local, and/or remote machines
future
multicore
📶
♻️
(not recommended) parallelly via forked R processes on current machine; not with GUIs like RStudio; not on Windows
future.callr
callr
📶(next)
♻️(next)
parallelly via transient callr background R sessions on current machine; all memory is returned when as each future is resolved
future.mirai
mirai_multisession
📶(next)
♻️(next)
parallelly via mirai background R sessions on current machine; low latency
future.mirai
mirai_cluster
♻️(next)
parallelly via mirai daemons running locally or remotely
future.batchtools
batchtools_lsf
batchtools_openlava
batchtools_sge
batchtools_slurm
batchtools_torque
📶(soon)
♻️(soon)
parallelly on HPC job schedulers (Load Sharing Facility [LSF], OpenLava, TORQUE/PBS, Son/Sun/Oracle/Univa Grid Engine [SGE], Slurm) via batchtools; for long-running tasks; high latency

📶: futures relay progress updates in real-time, e.g. progressr
♻️: futures are interruptible and restartable; * disabled by default
(next): next release; (soon): in a near-future release