Dirk Eddelbuettel: Rcpp 1.1.2 on CRAN: Usual Improvements in Semi-Annual Update
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!
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.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.
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.
A new release 0.1.7 of
This is the report for the
The following contributors got their Debian Developer accounts in the last two months:
Particularly noteworthy is the addition of support for intra-daily times in