
The Rcpp team is pleased to announce release 1.0.7 of
Rcpp which arrived at
CRAN earlier today, and will be uploaded to
Debian shortly. Windows and macOS builds should appear at CRAN in the next few days. This release continues with the six-months cycle started with
release 1.0.5 last July. As a reminder, interim dev or rc releases will alwasys be available in the
Rcpp drat repo; this cycle there were seven (!!). These rolling release 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. As of today, 2323 packages on
CRAN depend on
Rcpp for making analytical code go faster and further, along with 227 in
BioConductor.
This release contains a change which
Luke Tierney urged us to make a good year ago in
#1081) (and which we had looked at earlier in
#382). Implementing the change in a regular update proved a little tricky, and my initial branch lay dormant until
I aki revived it, and finished the transition (which we then did in two PRs). The change concerns how Rcpp grows internal objects, and the new approach (thanks to the hint by Luke) closer to what R does guaranteeing linear behaviour. It turns out that we overlooked one aspect (of coping with Modules built under earlier Rcpp releases) so the initial upload to CRAN on Saturday revealed that we needed a small adjustment that we made for the final release. This version should now be more performant, and rest on a stable API. Based on the reverse depends checks by both us and CRAN (using the updated version), we expect no issues with existing code. However, it something does act up a fresh compilation of the packages using Rcpp may help.
We also made a few other minor changes in the API such as silencing a silly compiler warning, ensuring global
Rcout and
Rcerr objects, adding support for a new
Rcpp::message() call, completing a switch to
uint32_t instead of
unsigned int and including the
cfloat header (which relates to
STRICT_R_HEADERS discussed below). Similarly, the Rcpp Attributes feature was enhanced by coping better with packages with a dot in their name and their for per-package include files, along with support for more quiet compilation if desired.
As some Rcpp users may have seen, we plan to enable
STRICT_R_HEADERS by the next release (expected in January 2022). A long issue tick
#1158 is laying the ground work. Maintainers of 81 packages which are affected and need a small change (such as for example switching from
PI to
M_PI); of these 56 have already responded. We plan to be in touch in the fall. Adding the
cfloat header is one help in this transition (as the corresponding C header was pulled in when
STRICT_R_HEADERS is not defined) as it ensures
DBL_EPSILON and alike are defined.
Last but not least this is also the first relase in which we welcome
I aki as a new member of the Rcpp Core team. Yay!
The NEWS file entries follow summarizing the nine key PRs in this release.
Changes in Rcpp release version 1.0.7 (2021-07-06)
- Changes in Rcpp API:
- Refactored
Rcpp_PreserveObject and Rcpp_ReleaseObject which are now O(1) (Dirk and I aki in #1133 and #1135 fixing #382 and #1081).
- A spuriously assigned variable was removed (Dirk in #1138 fixing #1137).
- Global
Rcout and Rcerr objects are supported via a compiler directive (I aki in #1139 fixing #928)
- Add support for
Rcpp::message (Dirk in #1146 fixing #1145).
- The
uint32_t type is used throughout instead of unsigned int (Dirk in #1153 fixing #1152).
- The
cfloat header for floating point limits is now included (Dirk in #1162 fixing #1161).
- Changes in Rcpp Attributes:
- Packages with dots in their name can now have per-package include files (Dirk in #1132 fixing #1129).
- New argument
echo to quieten optional evaluation in sourceCpp (Dirk in #1138 fixing #1126).
- Forthcoming Changes in Rcpp API:
- Starting with Rcpp 1.0.8 anticipated in January 2022,
STRICT_R_HEADERS will be enabled by default, see #1126.
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) 2616 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.