← Back to all sparks
C

callr

DEVOPS
Velocity0.0

Call R from R in a fresh background or foreground subprocess

callr adds OpenTelemetry tracing, making R subprocess work observable across process boundaries

subprocessobservabilityopentelemetryr-libtracing
Current state
callr runs R code in fresh subprocesses and had been in maintenance for roughly two years — the 3.7.x releases are error-object polish, DLL handling, and Windows fixes. 3.8.0 breaks that pattern with a batch of substantive changes: pseudo-terminal support, carrier::crate() handling, configurable temp directories, honest non-zero exit statuses, and OpenTelemetry instrumentation.
Where it's heading
The package is being repositioned from a convenience wrapper into infrastructure that production R workloads can be operated against. Tracing spans that propagate a W3C traceparent into the child process, plus exit codes that finally reflect failure, are both about making callr legible to systems outside R. The pty and libpath changes point the same way — toward callr hosting long-lived, externally managed sessions.
Prediction
Expect the OpenTelemetry surface to spread to sibling packages in the processx/r-lib process stack, and further work on subprocess failure semantics now that non-zero exits are the default.

Recent moves

  1. 2mo ago

    OpenTelemetry tracing, pty support, and honest subprocess exit codes

    ⚡ SPARK

    After two years of maintenance releases, callr takes on production concerns: distributed tracing, pseudo-terminals, configurable temp dirs, and subprocess exit statuses that finally reflect errors instead of always returning 0. This is the release that changes what callr is for.

    View source ↗
  2. 2y ago

    Env var to skip copying the client DLL

    An escape hatch for environments where callr's temp-directory DLL copy is a problem. Invisible to almost everyone.

    View source ↗
  3. 2y ago

    Running-time fix and fully qualified subprocess calls

    Corrects get_running_time() and hardens the subprocess against global-environment shadowing. Maintenance-window work.

    View source ↗
  4. 3y ago

    Errors carry subprocess stdout and stderr again

    Restores output capture on error, which is the difference between a debuggable failure and an opaque one. A small preview of the failure-semantics work that 3.8.0 finishes.

    View source ↗
  5. 3y ago

    Experimental add_hook() for subprocess startup

    Adds a documented, if experimental, way to intervene in child process startup and options — the kind of extension point later releases build configuration on.

    View source ↗
  6. 4y ago

    Uncompressed transport by default; revamped error objects

    Serialization between sessions drops compression by default, trading bytes for speed, and error objects get a broad rework. Both are ergonomics changes that make callr cheaper to use in loops.

    View source ↗