← Back to all sparks
C

cpp11

DEVOPS
Velocity0.0

Header-only C++11 interface to R for safe and fast native extensions

cpp11 has spent two years rebuilding itself on R's supported API surface

r-cppnon-api-migrationcran-complianceperformancer-lib
Current state
cpp11 is the header-only C++ interface for R packages, and nearly every release in this window is governed by one force: R core's tightening of what counts as non-API. 0.5.0 removed the growable-vector internals that made push_back() cheap, 0.5.3 and 0.5.4 removed further non-API usage, and the small releases in between are crash and compiler-warning fixes.
Where it's heading
The package is trading a little performance for the right to keep passing CRAN checks indefinitely, and saying so plainly in the release notes. With R >= 4.0 now required, whole compatibility branches have been deleted rather than maintained. The remaining work is narrow: finish the non-API migration, then get back to interface features like cpp_source() handling multiple files.
Prediction
Expect the last non-API dependencies to be cleared and the deprecated compatibility defines to be removed outright; the entries suggest maintenance discipline rather than new C++ surface.

Recent moves

  1. 3mo ago

    cpp_source() accepts multiple files; template crash fixed

    A rare feature entry in a maintenance-dominated stretch — multi-file cpp_source() plus a fix for crashes when stop() and warning() shared a template instantiation.

    View source ↗
  2. 4mo ago

    R_NamespaceRegistry usage removed

    Another increment of the non-API cleanup plus an fmt wrapping fix. Invisible to package authors using cpp11 normally.

    View source ↗
  3. 6mo ago

    ATTRIB() removed; C++ compatibility headers tidied

    Continues clearing non-API calls and switches to C++-native compatibility headers. Compliance work with no behavioral change.

    View source ↗
  4. 1y ago

    cpp11 0.5.2

    A single compiler-warning fix for deprecated literal operators.

    View source ↗
  5. 1y ago

    R 4.0 required; unwind-protect and ALTREP defines retired

    Raising the floor to R 4.0 lets whole compatibility branches be deleted, and package authors are explicitly asked to stop using the retired defines. Sets up the dead-code removal signposted for later releases.

    View source ↗
  6. 1y ago

    Growable-vector internals dropped for R's supported API

    ⚡ SPARK

    The architectural pivot the rest of this window follows from: cpp11 abandons the non-API functions behind its efficient growable vectors and the stricter variable lookup that replaces Rf_findVarInFrame3, accepting a documented extra allocation on conversion back to SEXP.

    View source ↗