Site icon R-bloggers

Rcpp 0.10.2

[This article was first published on Thinking inside the box , and kindly contributed to R-bloggers]. (You can report issue about the content on this page here)
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.
Relase 0.10.2 of Rcpp provides the second update to the 0.10.* series, and has arrived on CRAN and in Debian.

It brings another great set of enhancements and extensions, building on the recent 0.10.0 and 0.10.1 releases. The new Rcpp attributes were rewritten to not require Rcpp modules (as we encountered on issue with exceptions on Windows when built this way), code was reorganized to significantly accelerate compilation and a couple of new things such as more Rcpp sugar goodies, a new timer class, and a new string class were added. See below for full details.

We also tested this fairly rigorously by checking about two thirds of the over 90 CRAN packages depending on Rcpp (and the remainder required even more package installs which we did not do as this was already taking about 12 total cpu hours to test). We are quite confident that no changes are required (besides one in our own RcppClassic package which we will update.

The complete NEWS entry for 0.10.2 is below; more details are in the ChangeLog file in the package and on the Rcpp Changelog page.

Changes in Rcpp version 0.10.2 (2012-12-21)

  • Changes in Rcpp API:

    • Source and header files were reorganized and consolidated so that compile time are now significantly lower

    • Added additional check in Rstreambuf deletetion

    • Added support for clang++ when using libc++, and for anc icpc in std=c++11 mode, thanks to a patch by Yan Zhou

    • New class Rcpp::String to facilitate working with a single element of a character vector

    • New utility class sugar::IndexHash inspired from Simon Urbanek’s fastmatch package

    • Implementation of the equality operator between two Rcomplex

    • RNGScope now has an internal counter that enables it to be safely used multiple times in the same stack frame.

    • New class Rcpp::Timer for benchmarking

  • Changes in Rcpp sugar:

    • More efficient version of match based on IndexHash

    • More efficient version of unique base on IndexHash

    • More efficient version of in base on IndexHash

    • More efficient version of duplicated base on IndexHash

    • More efficient version of self_match base on IndexHash

    • New function collapse that implements paste(., collapse= "" )

  • Changes in Rcpp attributes:

    • Use code generation rather than modules to implement sourceCpp and compileAttributes (eliminates problem with exceptions not being able to cross shared library boundaries on Windows)

    • Exported functions now automatically establish an RNGScope

    • Functions exported by sourceCpp now directly reference the external function pointer rather than rely on dynlib lookup

    • On Windows, Rtools is automatically added to the PATH during sourceCpp compilations

    • Diagnostics are printed to the console if sourceCpp fails and C++ development tools are not installed

    • A warning is printed if when compileAttributes detects Rcpp::depends attributes in source files that are not matched by Depends/LinkingTo entries in the package DESCRIPTION

Thanks to CRANberries, you can also look at a diff to the previous release 0.10.1. As always, even fuller details are on the Rcpp Changelog page and the Rcpp page which also leads to the downloads, the browseable doxygen docs and zip files of doxygen output for the standard formats. A local directory has source and documentation too. Questions, comments etc should go to the rcpp-devel mailing list off the R-Forge page
To leave a comment for the author, please follow the link and comment on their blog: Thinking inside the box .

R-bloggers.com offers daily e-mail updates about R news and tutorials about learning R and many other topics. Click here if you're looking to post or find an R/data-science job.
Want to share your content on R-bloggers? click here if you have a blog, or here if you don't.