← Back to all sparks
R

RcppParallel

DEVOPS
Velocity6.3

Parallel programming tools for R packages using Intel TBB and TinyThread

RcppParallel rebuilt its TBB foundation in 6.0.0, then spent a week fixing what that broke.

rcpponetbbparallelismabi-breakbuild-toolchains
Current state
Four releases landed in eight days. 6.0.0 bundles oneTBB 2022.0.0, stops re-exporting TBB headers through `RcppParallel/TBB.h`, and changes the TBB ABI so dependent packages need rebuilding; on Windows it switched to Rtools' TBB, restricting the TBB backend to R 4.2.0 and later. 6.1.0 adds `isProcessForkedChild()` in both R and C++ so packages can detect a forked process and fall back to serial work, and enables TBB by default on musl distributions like Alpine. 6.1.1 and 6.2.0 are installation repairs — cmake discovery on macOS, a C++20 iterator-dispatch bug in bundled oneTBB, and a return to shared TBB libraries on Windows.
Where it's heading
The direction is toward RcppParallel owning its TBB, consistently, on every platform: 6.0.0 handed Windows to Rtools, and 6.2.0 reversed that to ship `tbb.dll` like everywhere else, explicitly so downstream packages have a library to link against and the ABI stops depending on the user's toolchain. Read together, the four releases are one migration and its aftermath. The fork-detection API is the other notable thread — it acknowledges that TBB and `mclapply()` do not mix.
Prediction
Further installation and toolchain fixes are likely while the CRAN build farm exercises the new oneTBB on more configurations; the platform layout looks close to settled after 6.2.0.

Recent moves

  1. 14d ago

    RcppParallel 6.2.0

    Fixes a bundled-oneTBB bug that broke toolchains accepting `-std=c++20` with a pre-C++20 standard library, and makes Windows build and ship TBB as a shared library like every other platform. It reverses the Rtools decision from 6.0.0 and gives downstream packages a TBB to link against.

    View source ↗
  2. 17d ago

    RcppParallel 6.1.1 fixes cmake discovery on macOS

    Finds cmake when it is not on PATH — the failure mode on CRAN's macOS machines — and strips configure-script probes made obsolete by the cmake-driven build.

    View source ↗
  3. 17d ago

    RcppParallel 6.1.0 adds fork detection, enables TBB on musl

    Adds `isProcessForkedChild()` in R and C++ so packages dispatching TBB work inside `mclapply()` can fall back to a serial path, and turns TBB on by default for musl distributions. Both extend where RcppParallel can safely run.

    View source ↗
  4. 21d ago

    RcppParallel 6.0.0 bundles oneTBB 2022 and breaks the ABI

    ⚡ SPARK

    The release the other three exist to support: oneTBB 2022.0.0 bundled, TBB headers no longer re-exported, an ABI change requiring dependents to rebuild, and Windows moved onto Rtools' TBB with an R 4.2.0 floor. It resets what every package built on RcppParallel compiles against.

    View source ↗