[Rcpp-devel] [ANN] Rcpp 0.12.0

Dirk Eddelbuettel edd at debian.org
Wed Jul 29 02:56:17 CEST 2015

Rcpp 0.12.0 came out on Saturday, and I wrote a short blog which I expected
to be mostly ignored on the weekend.  I then forgot to mention this here.

A short blog post about it is at


and included as text (without links, or the nice image :) below.

This release represents much appreciated contributions from a number of
people--particularly Qiang Kou whom we also welcomed into the Rcpp Core team.
As always, thanks to everybody for testing, suggestions and input.

On behalf of Rcpp Core,  Dirk

  Rcpp 0.12.0: Now with more Big Data!

   big-data image

   A new release 0.12.0 of Rcpp arrived on the CRAN network for GNU R this
   morning, and I also pushed a Debian package upload.

   Rcpp has become the most popular way of enhancing GNU R with C++ code. As
   of today, 423 packages on CRAN depend on Rcpp for making analyses go
   faster and further. Note that this is 60 more packages since the last
   release in May! Also, BioConductor adds another 57 packages, and casual
   searches on GitHub suggests many more.

   And according to Andrie De Vries, Rcpp has now page rank of one on CRAN as

   And with this release, Rcpp also becomes ready for Big Data, or, as they
   call it in Texas, Data.

   Thanks to a lot of work and several pull requests by Qiang Kou, support
   for R_xlen_t has been added.

   That means we can now do stunts like

 R> library(Rcpp)
 R> big <- 2^31-1
 R> bigM <- rep(NA, big)
 R> bigM2 <- c(bigM, bigM)
 R> cppFunction("double getSz(LogicalVector x) { return x.length(); }")
 R> getSz(bigM)
 [1] 2147483647
 R> getSz(bigM2)
 [1] 4294967294

   where prior versions of Rcpp would just have said

 > getSz(bigM2)
 Error in getSz(bigM2) :
   long vectors not supported yet: ../../src/include/Rinlinedfuns.h:137

   which is clearly not Texas-style. Another wellcome change, also thanks to
   Qiang Kou, adds encoding support for strings.

   A lot of other things got polished. We are still improving exception
   handling as we still get the odd curveballs in a corner cases. Matt
   Dziubinski corrected the var() computation to use the proper two-pass
   method and added better support for lambda functions in Sugar expression
   using sapply(), Qiang Kou added more pull requests mostly for string
   initialization, and Romain added a pull request which made data frame
   creation a little more robust, and JJ was his usual self in tirelessly
   looking after all aspects of Rcpp Attributes.

   As always, you can follow the development via the GitHub repo and
   particularly the Issue tickets and Pull Requests. And any discussions,
   questions, ... regarding Rcpp are always welcome at the rcpp-devel mailing

   Last but not least, we are also extremely pleased to annouce that Qiang
   Kou has joined us in the Rcpp-Core team. We are looking forward to a lot
   more awesome!

   See below for a detailed list of changes extracted from the NEWS file.

    Changes in Rcpp version 0.12.0 (2015-07-24)

       * Changes in Rcpp API:

            * Rcpp_eval() no longer uses R_ToplevelExec when evaluating R
              expressions; this should resolve errors where calling handlers
              (e.g. through suppressMessages()) were not properly respected.

            * All internal length variables have been changed from R_len_t to
              R_xlen_t to support vectors longer than 2^31-1 elements (via
              pull request 303 by Qiang Kou).

            * The sugar function sapply now supports lambda functions
              (addressing issue 213 thanks to Matt Dziubinski)

            * The var sugar function now uses a more robust two-pass method,
              supports complex numbers, with new unit tests added (via pull
              request 320 by Matt Dziubinski)

            * String constructors now allow encodings (via pull request 310
              by Qiang Kou)

            * String objects are preserving the underlying SEXP objects
              better, and are more careful about initializations (via pull
              requests 322 and 329 by Qiang Kou)

            * DataFrame constructors are now a little more careful (via pull
              request 301 by Romain Francois)

            * For R 3.2.0 or newer, Rf_installChar() is used instead of
              Rf_install(CHAR()) (via pull request 332).

       * Changes in Rcpp Attributes:

            * Use more robust method of ensuring unique paths for generated
              shared libraries.

            * The evalCpp function now also supports the plugins argument.

            * Correctly handle signature termination characters ('{' or ';')
              contained in quotes.

       * Changes in Rcpp Documentation:

            * The Rcpp-FAQ vignette was once again updated with respect to OS
              X issues and Fortran libraries needed for e.g. RcppArmadillo.

            * The included Rcpp.bib bibtex file (which is also used by other
              Rcpp* packages) was updated with respect to its CRAN

   Thanks to CRANberries, you can also look at a diff to the previous release
   As always, even fuller 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. A local
   directory has source and documentation too. Questions, comments etc should
   go to the rcpp-devel mailing list off the R-Forge page.

   This post by Dirk Eddelbuettel originated on his Thinking inside the box
   blog. Please report excessive re-aggregation in third-party for-profit

                                                  /code/rcpp | permanent link

http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org

More information about the Rcpp-devel mailing list