← Back to all sparks
P

processx

DEVOPS
Velocity0.0

Run and control external system processes from R with full I/O handling

processx adds kernel-level process pipelines after years of defensive fixes.

rsubprocessprocess-managementpipelinesr-lib
Current state
processx is the low-level subprocess engine underneath callr and much of the r-lib tooling stack. For several releases it shipped only hardening work: RNG hygiene, safer format strings, signal handling around terminated parents. Version 3.9.0 breaks that pattern with an experimental pipeline class.
Where it's heading
The package is moving from running one subprocess reliably toward orchestrating graphs of them, with bytes flowing between children through kernel pipes rather than being relayed through R. The new linux_pdeathsig argument points the same way, giving callers real lifecycle control over long-running children.
Prediction
Expect the pipeline class to lose its experimental label and gain callr integration if the API holds up across both Unix and Windows.

Recent moves

  1. 3mo ago

    processx 3.9.0 adds shell-style pipelines between child processes

    ⚡ SPARK

    The first capability jump in this window: a pipeline R6 class that chains child processes through kernel-level pipes, plus linux_pdeathsig for tying child lifetime to the parent R process. After a run of purely defensive releases, processx is extending what it can do rather than what it can survive.

    View source ↗
  2. 1y ago

    processx 3.8.6 restores cloneable process objects for R6 2.6

    Compatibility housekeeping: process objects are temporarily cloneable again to suppress messages from R6 2.6.0, and processx no longer perturbs the RNG state. Both are the defensive maintenance the 3.8.x line consisted of.

    View source ↗
  3. 2y ago

    processx 3.8.3 hardens internal printf format strings

    A single internal hardening change making printf-style format strings safer. No user-visible effect.

    View source ↗
  4. 3y ago

    processx 3.8.2 ignores SIGPIPE to avoid callr session freezes

    The client library now ignores SIGPIPE when writing to a file descriptor on Unix, avoiding freezes when a callr session reports results after its parent died. Invisible unless you were hitting the parallel testthat hang it fixes.

    View source ↗
  5. 3y ago

    processx 3.8.1 adds opt-in SIGTERM temp-directory cleanup

    Adds an opt-in SIGTERM cleanup handler so callr-created R processes remove their temporary directory before shutting down. Gated behind an environment variable, it is an early move toward the lifecycle control that 3.9.0 later formalises.

    View source ↗
  6. 3y ago

    processx 3.8.0 adds hyperlinked error stacks, fixes system() calls

    Error stacks gain ANSI hyperlinks to manual pages and print operators more legibly, and standard streams are no longer close-on-exec on Unix so system() works from an R subprocess. Debugging-quality work rather than new capability.

    View source ↗