This release follows the 0.12.0 release from July 2016, the 0.12.1 release in September 2016, the 0.12.2 release in November 2016, the 0.12.3 release in January 2017, the 0.12.4 release in March 2016, the 0.12.5 release in May 2016, the 0.12.6 release in July 2016, the 0.12.7 release in September 2016, the 0.12.8 release in November 2016, the 0.12.9 release in January 2017, the 0.12.10.release in March 2017, the 0.12.11.release in May 2017, the 0.12.12 release in July 2017, the 0.12.13.release in late September 2017, and the 0.12.14.release in November 2017 making it the nineteenth release at the steady and predictable bi-montly release frequency.
Rcpp has become the most popular way of enhancing GNU R with C or C++ code. As of today, 1288 packages on CRAN depend on Rcpp for making analytical code go faster and further, along with another 91 in BioConductor.
This release contains a pretty large number of pull requests by a wide variety of authors. Most of these pull requests are very focused on a particular issue at hand. One was larger and ambitious with some forward-looking code for R 3.5.0; however this backfired a little on Windows and is currently “parked” behind a
#define. Full details are below.
Changes in Rcpp version 0.12.15 (2018-01-16)
Changes in Rcpp API:
Protect more temporary
SEXPobjects produced by
wrap(Kevin in #784).
Use public R APIs for
new_env(Kevin in #785).
Evaluation of R code is now safer when compiled against R 3.5 (you also need to explicitly define
Rcpp.h). Longjumps of all kinds (condition catching, returns, restarts, debugger exit) are appropriately detected and handled, e.g. the C++ stack unwinds correctly (Lionel in #789). [ Committed but subsequently disabled in release 0.12.15 ]
The new function
Rcpp_fast_eval()can be used for performance-sensitive evaluation of R code. Unlike
Rcpp_eval(), it does not try to catch errors with
tryEvalin order to avoid the catching overhead. While this is safe thanks to the stack unwinding protection, this also means that R errors are not transformed to an
Rcpp::exception. If you are relying on error rethrowing, you have to use the slower
Rcpp_eval(). On old R versions
Rcpp_fast_eval()falls back to
Rcpp_eval()so it is safe to use against any versions of R (Lionel in #789). [ Committed but subsequently disabled in release 0.12.15 ]
Overly-clever checks for
NAhave been removed (Kevin in #790).
The included tinyformat has been updated to the current version, Rcpp-specific changes are now more isolated (Kirill in #791).
Overly picky fall-through warnings by gcc-7 regarding
switchstatements are now pre-empted (Kirill in #792).
Permit compilation on ANDROID (Kenny Bell in #796).
Rearrange stack unwind test code, keep test disabled for now (Lionel in #801).
Further condition away protect unwind behind #define (Dirk in #802).
Changes in Rcpp Attributes:
- Addressed a missing Rcpp namespace prefix when generating a C++ interface (James Balamuta in #779).
Changes in Rcpp Documentation:
- The Rcpp FAQ now shows
Rcpp::Rcpp.plugin.maker()and not the outdated
:::use applicable non-exported functions.
Thanks to CRANberries, you can also look at a diff to the previous release. As always, details are on the Rcpp Changelog page and the Rcpp page which also leads to the downloads page, the browseable doxygen docs and zip files of doxygen output for the standard formats. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page.