The Rcpp team is thrilled to announce the newest release 1.0.10 of the Rcpp package which is hitting CRAN now and will go to Debian shortly. Windows and macOS builds should appear at CRAN in the next few days, as will builds in different Linux distribution and of course at r2u. The release was prepared a few days ago, but given the widespread use at CRAN it took a few days to be processed. As always, our sincere thanks to the CRAN maintainers Uwe Ligges and Kurt Hornik. This release continues with the six-months cycle started with release 1.0.5 in July 2020. As a reminder, we do of course make interim snapshot ‘dev’ or ‘rc’ releases available via the Rcpp drat repo and strongly encourage their use and testing—I run my systems with these versions which tend to work just as well, and are also fully tested against all reverse-dependencies.
Rcpp has become the most popular way of enhancing R with C or C++ code. Right now, around 2623 packages on CRAN depend on Rcpp for making analytical code go faster and further, along with 252 in BioConductor. On CRAN, 13.7% of all packages depend (directly) on CRAN, and 58.7% of all compiled packages do. From the cloud mirror of CRAN (which is but a subset of all CRAN downloads), Rcpp has been downloaded 67.1 million times.
This release is incremental as usual, preserving existing capabilities faithfully while smoothing our corners and / or extending slightly. Of particular note is the now fully-enabled use of the ‘unwind’ protection making some operations a little faster by default; special thanks to Iñaki for spearheading this. Kevin and I also polished a few other bugs off as detailed below.
The full list of details follows.
Changes in Rcpp release version 1.0.10 (2023-01-12)
Changes in Rcpp API:
Unwind protection is enabled by default (Iñaki in #1225). It can be disabled by defining
RCPP_NO_UNWIND_PROTECT
before includingRcpp.h
.RCPP_USE_UNWIND_PROTECT
is not checked anymore and has no effect. The associated pluginunwindProtect
is therefore deprecated and will be removed in a future release.The 'finalize' method for Rcpp Modules is now eagerly materialized, fixing an issue where errors can occur when Module finalizers are run (Kevin in #1231 closing #1230).
Zero-row
data.frame
objects can receivepush_back
orpush_front
(Dirk in #1233 fixing #1232).One remaining
sprintf
has been replaced bysnprintf
(Dirk and Kevin in #1236 and #1237).Several conversion warnings found by
clang++
have been addressed (Dirk in #1240 and #1241).Changes in Rcpp Attributes:
Changes in Rcpp Deployment:
- Several GitHub Actions have been updated.
Thanks to my CRANberries, you
can also look at a diff
to the previous release. Questions, comments etc should go to the rcpp-devel
mailing list off the R-Forge page.
Bugs reports are welcome at the GitHub issue tracker as
well (where one can also search among open or closed issues);
questions are also welcome under rcpp
tag at StackOverflow which also allows searching among the
(currently) 2932 previous questions.
If you like this or other open-source work I do, you can sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.
Boost is a very large and comprehensive set of (peer-reviewed) libraries for the C++ programming language, containing well over one hundred individual libraries. The BH package provides a sizeable subset of header-only libraries for (easier, no linking required) use by R. It is fairly widely used: the (partial) CRAN mirror logs (aggregated from the cloud mirrors) show over 32.6 million package downloads.
Version 1.81.0 of Boost was released in December following the regular Boost release schedule of April, August and December releases. As the commits and changelog show, we packaged it almost immediately and started testing following our annual update cycle which strives to balance being close enough to upstream and not stressing CRAN and the user base too much. The reverse depends check revealed about a handful of packages requiring changes or adjustments which is a pretty good outcome given the over three hundred direct reverse dependencies. So we opened issue #88 to coordinate the issue over the winter break during which CRAN also closes (just as we did before), and also send a wider ‘PSA’ tweet as a heads-up. Our sincere thanks to the two packages that already updated, and the four that likely will soon. Our thanks also to CRAN for reviewing the package impact over the last few days since I uploaded the package earlier this week.
There are a number of changes I have to make each time in BH, and it
is worth mentioning them. Because CRAN cares about backwards
compatibility and the ability to be used on minimal or older systems, we
still adjust the filenames of a few files to fit a jurassic
constraints of just over a 100 characters per filepath present in some
long-outdated versions of tar
. Not a big deal. We also, and
that is more controversial, silence a number of
#pragma diagnostic
messages for g++
and
clang++
because CRAN insists on it. I have no choice in
that matter. Next, and hopefully this time only, we also found and
replaced a few remaining sprintf
uses and replaced them
with snprintf
. Many of the Boost libraries did that, so I
hope by the next upgrade for Boost 1.84.0 next winter this will be fully
taken care of. Lastly, and also only this time, we silenced a warning
about Boost switching to C++14 in the next release 1.82.0 in April. This
may matter for a number of packages having a hard-wired selection of
C++11 as their C++ language standard. Luckily our compilers are good
enough for C++14 so worst case I will have to nudge a few packages next
December.
This release adds one new library for url processing which struck us as potentially quite useful. The more detailed NEWS log follows.
Changes in version 1.81.0-1 (2023-01-17)
Via my CRANberries, there
is a diffstat
report relative to the previous
release.
Comments and suggestions about BH are welcome via the issue tracker at the GitHub repo.
If you like this or other open-source work I do, you can now sponsor me at GitHub.
This post by Dirk Eddelbuettel originated on his Thinking inside the box blog. Please report excessive re-aggregation in third-party for-profit settings.