Allgemein

Dirk Eddelbuettel: Rcpp 1.1.1 on CRAN: Many Improvements in Semi-Annual Update

Dirk Eddelbuettel: Rcpp 1.1.1 on CRAN: Many Improvements in Semi-Annual Update

rcpp logo

Team Rcpp is thrilled to share that an exciting new version 1.1.1 of
Rcpp is now on CRAN (and also
uploaded to Debian and already
built for r2u).

Having switchted to C++11 as the minimum standard in the
previous 1.1.0 release
, this version takes full advantage of it and
removes a lot of conditional code catering to older standards
that no longer need to be supported. Consequently, the source tarball
shrinks by 39% from 3.11 mb to 1.88 mb. That is a big deal. (Size peaked
with Rcpp 1.0.12 two years ago at 3.43 mb; relative to its size we are
down 45% !!) Removing unused code also makes maintenance easier, and
quickens both compilation and installation in general.

This release continues as usual with the six-months January-July
cycle started with release
1.0.5 in July 2020
. Interim snapshots are always available via the
r-universe page and
repo
. We continue to strongly encourage the use of these development
released and their testing—we tend to run our systems with them too.

Rcpp has long established itself
as the most popular way of enhancing R with C or C++ code. Right now,
3020 packages on CRAN depend on
Rcpp for making analytical code go
faster and further. On CRAN, 13.1% of all packages depend (directly) on
Rcpp, and 60.9% of all compiled
packages do. From the cloud mirror of CRAN (which is but a subset of all
CRAN downloads), Rcpp has been
downloaded 109.8 million times. The two published papers (also included
in the package as preprint vignettes) have, respectively, 2151 (JSS, 2011) and 405 (TAS, 2018)
citations, while the the book (Springer useR!,
2013)
has another 715.

This time, I am not attempting to summarize the different changes.
The full list follows below and details all these changes, their
respective PRs and, if applicable, issue tickets. Big thanks from all of
us to all contributors!

Changes in
Rcpp release version 1.1.1 (2026-01-08)

  • Changes in Rcpp API:

    • An unused old R function for a compiler version check has been
      removed after checking no known package uses it (Dirk in #1395)

    • A narrowing warning is avoided via a cast (Dirk in #1398)

    • Demangling checks have been simplified (Iñaki in #1401 addressing
      #1400)

    • The treatment of signed zeros is now improved in the Sugar code
      (Iñaki in #1404)

    • Preparations for phasing out use of Rf_error have
      been made (Iñaki in #1407)

    • The long-deprecated function loadRcppModules() has
      been removed (Dirk in #1416 closing #1415)

    • Some non-API includes from R were refactored to accommodate
      R-devel changes (Iñaki in #1418 addressing
      #1417)

    • An accessor to Rf_rnbeta has been removed (Dirk in
      #1419 also
      addressing #1420)

    • Code accessing non-API Rf_findVarInFrame now uses
      R_getVarEx (Dirk in #1423 fixing #1421)

    • Code conditional on the R version now expects at least R 3.5.0;
      older code has been removed (Dirk in #1426 fixing #1425)

    • The non-API ATTRIB entry point to the R API is no
      longer used (Dirk in #1430 addressing
      #1429)

    • The unwind-protect mechanism is now used unconditionally (Dirk in
      #1437 closing
      #1436)

  • Changes in Rcpp Attributes:

    • The OpenMP plugin has been generalized for different macOS compiler
      installations (Kevin in #1414)
  • Changes in Rcpp Documentation:

    • Vignettes are now processed via a new “asis” processor adopted
      from R.rsp (Dirk in #1394 fixing #1393)

    • R is now cited via its DOI (Dirk)

    • A (very) stale help page has been removed (Dirk in #1428 fixing #1427)

    • The main README.md was updated emphasizing r-universe in favor of
      the local drat repos (Dirk in #1431)

  • Changes in Rcpp Deployment:

    • A temporary change in R-devel concerning NA part in complex
      variables was accommodated, and then reverted (Dirk in #1399 fixing #1397)

    • The macOS CI runners now use macos-14 (Dirk in #1405)

    • A message is shown if R.h is included before Rcpp
      headers as this can lead to errors (Dirk in #1411 closing #1410)

    • Old helper functions use message() to signal they
      are not used, deprecation and removal to follow (Dirk in #1413 closing #1412)

    • Three tests were being silenced following #1413 (Dirk in #1422)

    • The heuristic whether to run all available tests was refined
      (Dirk in #1434
      addressing #1433)

    • Coverage has been tweaked via additional #nocov tags
      (Dirk in #1435)

  • Non-release Changes:

    • Two interim non-releases 1.1.0.8.1 and .2 were made in order to
      unblock CRAN due to changes in R-devel rather than Rcpp

Thanks to my CRANberries, you
can also look at a diff
to the previous interim release
along with pre-releaseds 1.1.0.8,
1.1.0.8.1
and 1.1.0.8.2
that were needed because R-devel all of a sudden decided to move fast
and break things. Not our doing.

Questions, comments etc should go to the GitHub discussion
section
list]rcppdevellist
off the R-Forge
page
. Bugs reports are welcome at the GitHub issue tracker as
well
. Both sections can be searched as well.

This post by Dirk
Eddelbuettel
originated on his Thinking inside the box
blog. If you like this or other open-source work I do, you can sponsor me at
GitHub
.