Tue, 27 Nov 2012

Rcpp 0.10.1

A the new Rcpp release 0.10.1 arrived this morning on CRAN (as already has Windows binaries) and in Debian.

This is a follow-up to the recent 0.10.0 release which extends the exciting new Rcpp-attributes and Rcpp-sugar work further, and as in a number of other areas as detailed below in the NEWS sections.

This release brings an change to some of the binary interfaces. If you have packages using Rcpp, you will most likely have to reinstall them from source. Some change were made to const correctness as well as other aspects, and it seems that we have temporarily broken the excellent RcppEigen and RcppOctave packages. We are looking into this, and are sorry about the bug.

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

Changes in Rcpp version 0.10.1 (2012-11-26)

  • Changes in Rcpp sugar:

    • New functions: setdiff, union_, intersect setequal, in, min, max, range, match, table, duplicated

    • New function: clamp which combines pmin and pmax, e.g. clamp( a, x, b) is the same as pmax( b, pmin(x, a) )

    • New function: self_match which implements something similar to match( x, unique( x ) )

  • Changes in Rcpp API:

    • The Vector template class (hence NumericVector ...) get the is_na and the get_na static methods.

    • New helper class no_init that can be used to create a vector without initializing its data, e.g. : IntegerVector out = no_init(n) ;

    • New exception constructor requiring only a message; stop function to throw an exception

    • DataFrame gains a nrows method

  • Changes in Rcpp attributes:

    • Ability to embed R code chunks (via specially formatted block comments) in C++ source files.

    • Allow specification of argument defaults for exported functions.

    • New scheme for more flexible mixing of generated and user composed C++ headers.

    • Print warning if no export attributes are found in source file.

    • Updated vignette with additional documentation on exposing C++ interfaces from packages and signaling errors.

  • Changes in Rcpp modules:

    • Enclose .External invocations in BEGIN_RCPP/END_RCPP

  • Changes in R code :

    • New function areMacrosDefined

    • Additions to Rcpp.package.skeleton:

      • attributes parameter to generate a version of rcpp_hello_world that uses Rcpp::export.

      • cpp_files parameter to provide a list of C++ files to include the in the src directory of the package.

  • Miscellaneous changes:

    • New example 'pi simulation' using R and C++ via Rcpp attributes

Thanks to CRANberries, you can also look at a diff to the previous release 0.10.0. 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

/code/rcpp | permanent link