Changelog
Source:NEWS.md
rush (development version)
- chore: The minimum R version is now 3.6.0, and Redis (>= 7.0) is declared as a system requirement.
- refactor: Remove deprecated worker types
"local"and"remote". - refactor:
$fail_tasks(),$finish_tasks(),$pop_task(), and$push_running_tasks()are moved fromRushtoRushWorkerso that a task is only marked as failed or finished by the worker that processes it. - fix:
$fail_tasks()and$finish_tasks()now move a task between states atomically withMULTI/EXECso that a worker crash mid-move can no longer remove a task from the running state without recording it as failed or finished. - refactor: The deprecated methods
$push_failed()and$push_results()are removed. Use$fail_tasks()and$finish_tasks()instead. - fix:
$empty_queue()no longer creates an orphaned hash in the Redis database when the queue is already empty. - BREAKING CHANGE: The
$empty_queue()method now empties the entire queue instead of a specified set of tasks. Thekeysandconditionsarguments are removed. - fix:
$detect_lost_workers()no longer marks a task as both finished and failed, or loses a task. - fix:
$detect_lost_workers()now returns only the worker ids it actually detected as lost during the call, instead of also including workers that terminated cleanly while the method was running. - fix:
$pop_task()no longer loses a task when a worker crashes between popping the task from the queue and marking it as running. The task is now moved atomically into a per-worker pending list and recovered as a failed task by$detect_lost_workers(). - fix:
$push_tasks(),$push_finished_tasks(),$push_failed_tasks(), and$push_running_tasks()now return early when called with an empty list of tasks. - fix:
$fetch_tasks(),$fetch_finished_tasks(), and$fetch_new_tasks()no longer fail when task hashes have been removed from the database. Affected tasks are dropped with a warning. - fix:
$fetch_failed_tasks()and related methods now return the documentedconditioncolumn holding the whole condition object. - feat: The
extraargument of$push_tasks(),$push_running_tasks(), and$finish_tasks()methods is deprecated in favor of the consistently namedxss_extraandyss_extraarguments. - fix:
$start_local_workers()no longer generates unparseable worker startup code on Windows or when the temporary directory path contains quotes. The temporary arguments file is now deleted after the worker reads it. - fix:
$stop_workers()no longer errors when a requested worker id is not running. Such ids are now skipped with a warning. - perf:
$wait_for_tasks()no longer reads the full finished list and failed task set on every poll. - fix:
$worker_script()no longer logs the Redis password. The logged script shows<redacted>instead. The method now returns the script visibly. - fix:
RushWorker$new()now errors when the heartbeat process fails to set the heartbeat key within the startup timeout instead of silently registering a dead heartbeat.heartbeat_periodandheartbeat_expiremust now be at least 1 second, andheartbeat_expiremust be at leastheartbeat_periodseconds. - fix:
$reset()now also resets the internal log counter, so$print_log()no longer skips messages when the same network id is reused after a reset. - fix:
$reset()now deletes all keys in a singleMULTI/EXECtransaction so a concurrent reader can no longer observe a half-reset network. - feat:
rush_plan()gains thestart_worker_timeoutargument, which sets the default timeout used by$wait_for_workers(). An explicittimeoutpassed to$wait_for_workers()is no longer overridden by the configuration. - fix:
start_worker()no longer errors on exit whenmessage_logoroutput_logis set. The sinks are now reverted before the log connections are closed. - perf:
$worker_inforeads all workers in one pipelined round trip. - refactor: Large objects are now stored under UUID keys.
rush 1.1.0
CRAN release: 2026-04-24
- fix:
$detect_lost_workers()no longer creates phantom failed tasks when a worker crashes between task evaluations (#89). - fix:
$fetch_new_tasks()now correctly tracks seen results by using the actual cache size instead of the Redis counter, fixing cases where new results could be missed or duplicated. - fix:
$write_hashes()now requires all value lists to have the same length or length 1 instead of recycling. Length mismatches raise an error (#87). - fix:
rsh()no longer accepts...(which was ignored).
rush 1.0.1
CRAN release: 2026-04-04
- fix:
$start_workers()now strips the enclosing environment fromworker_loopbefore serialization, avoiding bloated Redis payloads when the function is a closure. - fix:
$fetch_tasks()and related methods no longer fail when task parameters contain vector values instead of scalars.
rush 1.0.0
CRAN release: 2026-03-18
- feat: Add
$push_finished_tasks()method. - feat: Combine
$wait_for_new_tasks()and$fetch_new_tasks()into$fetch_new_tasks()with timeout argument. - refactor: The
$wait_for_finished_tasks()method is removed. - perf: Cache is now a
data.table()instead of a list.data_formatargument is removed. - refactor: Seed mechanism is removed. Includes
with_rng_state(),is_lecyer_cmrg_seed(),get_random_seed(),set_random_seed(),make_rng_seeds()helper functions. - refactor: PID is no longer stored with tasks by
$push_tasks()and$push_running_tasks()methods. - refactor:
worker_extrafield is renamed toworker_id. - refactor:
$push_results()is renamed to$finish_tasks(). - fix: Heartbeat process moves worker to terminated.
- refactor:
$push_results()is deprecated. Use$finish_tasks()instead. - refactor:
$push_failed()is deprecated. Use$fail_tasks()instead. - refactor:
$terminated_on_idleis removed. - refactor: Removed
$push_priority_tasks(),$n_queued_priority_tasks,$priority_info, and$fetch_priority_tasks(). - fix: Redis with password is supported now.
- refactor: Remove
$restart_workers()method. - refactor: Squashed
"terminated","killed"and"lost"worker states into"terminated". - feat: Added
push_failed_tasks()for creating failed tasks. - refactor: Remove
reset_cachearguments in favor of$reset_cache()method. - refactor:
network_id,configandconnectorare now active bindings with validation. - refactor: Removed
$snapshot_schedule()and$redis_info()methods. - refactor: Removed
$all_workers_terminatedandall_workers_lostactive bindings. - refactor: Moved
$worker_statesto$worker_info. - feat: Add
"rush.max_object_size"option to limit the size of objects stored in Redis. - refactor: Renamed
$start_remote_workers()to$start_workers(). - feat: Add
$reset_data()method to reset task data without resetting the network. - fix:
rush_plan()now allows script workers. - fix: Default heartbeat expire is now correctly calculated as three times the heartbeat period.
- fix: Message and output log file connections are now properly closed when the worker exits.
- perf: Network-specific Redis keys are now deleted once during
$reset()instead of once per worker.
rush 0.4.1
CRAN release: 2025-11-06
- feat: The
$wait_for_workers()method can now wait for a specific number of workers or a specific set of worker ids. The workers are checked for registration in the network now.
rush 0.4.0
CRAN release: 2025-10-08
- feat: Add
$empty_queue()method. - fix: Queued tasks can be moved to failed now.
rush 0.3.0
CRAN release: 2025-07-31
- feat: Output and message logs can be written to files now via the
message_logandoutput_logarguments. - compatibility: lgr 0.5.0
- BREAKING CHANGE: The mlr3 ecosystem has a base logger now which is named
mlr3. Themlr3/rushlogger is a child of themlr3logger and is used for logging messages from therushpackage.