
Team Rcpp is excited to share that an brandnew new version 1.1.2 of Rcpp is now on CRAN, has also been uploaded to Debian, and has already built for r2u and r-universe; Windows etc builds at CRAN should follow in due course.
Rcpp has long established itself as the most popular way of enhancing R with C or C++ code. Right now, 3236 packages on CRAN depend on Rcpp for making analytical code go faster and further. On CRAN, 13.4% of all packages depend (directly) on Rcpp, and 61.4% of all compiled packages do. From the cloud mirror of CRAN (which is but a subset of all CRAN downloads), Rcpp has been downloaded 121.6 million times. The two published papers (also included in the package as preprint vignettes) have, respectively, 2263 (JSS, 2011) and 471 (TAS, 2018) citations, while the the book (Springer useR!, 2013) has another 742.
The is the second update in the 1.1.* series which had, among other changes, switched to C++11 as the minimum standard. 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.
Having said that, we would like to reiterate that we strongly object to the upstream R release and change management which in this 4.6.* cycle made several abrupt changes forcing packages which consume header files to make very abrupt change. Rcpp, just like numerous other CRAN packages demonstrates that API changes can be undertaken responsibly in a managed manner which allows for transition periods followed by possible warning periods, deprecations periods and finally (but only at long last) errors. What happened here is a speed run to the final stage of forced errors. Uncool and irritating for something as widely used as R. This forced us to make an interim release 1.1.1-1.1 even though we have of course had a policy of always keeping properly tested, installable, and error-free releases candidate version in the main repository branch and hence available via R-universe tested packages for all relevant platforms, and even via binaries for most (including Ubuntu LTS). It would be nice if R Core found a way to take advantage of this. Maybe development cycles, running apart for a year as they do for R, should also include selected packages.
Once again 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.2 (2026-07-01)
Changes in Rcpp API:
Use of
execinfo.his again conditional to avoid build complexity (Dirk in #1445 addressing #1442)An internal state component for
Datetimeis nowint(Dirk in #1448 and #1449 fixing #1447)Three new (in R 4.6.0) attribute accessors are used conditionally (Dirk in #1450 closing #1432)
An UBSAN error in the Sugar-based NA comparison has been corrected (Iñaki in #1453 fixing #1452)
Treatment of Inf outside of integer range in Sugar function has been corrected (Iñaki in #1458 fixing #1455)
Integer overflow protection has been added for sugar functions (Iñaki in #1457 fixing #1454)
The parent environment is now accessed via
R_ParentEnv(Dirk in #1460 fixing #1459)Change to returning
dataptragain for better handling of empty vectors (Iñaki in #1462 fixing #1461)Undefined behavior errors in use of
ListOfproxies have been addressed (Iñaki in #1464 fixing #1463)Under newer R version,
R_UnboundValueis no longer used (Iñaki in #1466 fixing #1465)New R API access point
R_getRegisteredNamespace()is used with current R versions (Dirk in #1469 fixing #1468)The
Nullable::as()exporter now uses an explicit cast to the templated type (Dirk in #1471 fixing #1470)A memory leak in the variadic
Rcpp::warning()template has been fixed (Kevin in #1475 fixing #1474)The
Nullable::operatorT()has been added as a 'opt-out' (Dirk in #1477 with coordination in #1472)Add templated integer-index overload for
operator[]on small systems such as WASM (Jeroen Ooms in #1482)The attribute accessors in
AttributeProxyPolicyno longer rely onget__()(Kevin in #1484 fixing #1483)Changes in Rcpp Documentation:
- Reference in the bibliography used by the package vignettes have been updated.
Changes in Rcpp Deployment:
Excute permissions are set consistently on scripts with shebangs (Mattias Ellert in #1467)
R 4.5.* has been added to the CI matrix (Dirk in #1476)
Three nag messages issued when obsolete build flag accessors are used now show
Rcpp:::(Dirk in #1480 fixing #1456)Reference GitHub Actions have been updated to their current versions (Dirk in #1481)
Non-release Changes:
- A non-release hotfix 1.1.1-1 used by CRAN accommodates breaking changes to the API in R 4.6.0. It would be nice to have the same level of release management in R itself that CRAN expects from us.
Thanks to my CRANberries, you can also look at a diff to the previous interim release along with pre-releases 1.1.1-1 and 1.1.1-1.1 that were needed because R-devel once again sudden decided to move fast and break things. Not our doing. And there also should not have been a need to two such uploads but it was amateur hour all around.
Questions, comments etc should go to the GitHub discussion or issue section, or the Rcpp list. Bugs reports are welcome at the GitHub issue tracker as well. GitHub offers decent search for issue, pull requests and discussions; as many topics have been covered it is worth checking 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.