137 lines
4.1 KiB
Plaintext
137 lines
4.1 KiB
Plaintext
|
|
|
|
===== Summary =====
|
|
|
|
Version 0.11.0 of the Rcpp package is now on CRAN and its mirrors.
|
|
|
|
This new release brings a number of new features, most noticably a simplified
|
|
build system, as well as improvements to existing features and bugfixes.
|
|
|
|
Complete details of the changes implemented between the last announcement for
|
|
version 0.10.0 and this new can be found in the NEWS and ChangeLog files
|
|
which are included in the package.
|
|
|
|
|
|
|
|
===== Overview =====
|
|
|
|
Rcpp is an R package and associated C++ library for seamless integration
|
|
between C++ and R.
|
|
|
|
It has been described in a Journal of Statistical Software (2011, Vol 40,
|
|
Issue 08) paper (also included in the package as the "Rcpp-introduction" pdf
|
|
vignette) and a book "Seamless R and C++ Integration with Rcpp" (2013,
|
|
Springer, useR! Series).
|
|
|
|
As of early 2014, Rcpp is used by over 160 other CRAN packages.
|
|
|
|
Several key features of the new 0.11.0 release are described below.
|
|
|
|
|
|
|
|
===== One-time rebuild required =====
|
|
|
|
Because of the simplified linking scheme detailed in the next section, and
|
|
the corresponding removal of the libRcpp.* library, all packages currently
|
|
using Rcpp need to be reinstalled.
|
|
|
|
We provide a simple helper script at
|
|
https://github.com/RcppCore/rcpp-logs/blob/master/scripts/showReverseRcppDepends.r
|
|
to identidy which of your currently-installed packages use Rcpp, and need to
|
|
be rebuilt / reinstalled.
|
|
|
|
|
|
|
|
===== Simpler Building with Rcpp =====
|
|
|
|
Thanks to the 'LinkingTo:' directive, R already instructed the compiler where
|
|
to fine header files when writing code with Rcpp. The package now uses the
|
|
registration facilities in R (see Section 5.4 in Writing R Extensions).
|
|
|
|
With just an 'Imports: Rcpp' in DESCRIPTION along with an explicit import
|
|
statement in the NAMESPACE file such 'importFrom(Rcpp, evalCpp)' all required
|
|
Rcpp code will be properly instantiated without any explicit linking. [ Note
|
|
that just using 'import(Rcpp)' is not sufficient, but any exported C++
|
|
identifier should do -- evalCpp is nice and short. ]
|
|
|
|
This means that the package no longer provides a user-facing library
|
|
libRcpp.so (or libRcpp.dylib or libRcpp.dll). This also implies that a
|
|
one-time rebuild is needed as alluded to in the previous section.
|
|
|
|
The key benefit is that many package should no longer require the files
|
|
src/Makevars and src/Makevars.win in order to link with Rcpp. Mny packages
|
|
will be able to retire these files. The exception, of course, is the case
|
|
where a package links against an external library as eg the RcppArmadillo
|
|
package> Here, the LAPACK / BLAS / Fortran libraries still need to be
|
|
linked. However, the corresponding values are also provided by R and the
|
|
expression becomes a simple 'PKG_LIBS=$(LAPACK_LIBS) $(BLAS_LIBS) $(FLIBS)'.
|
|
|
|
|
|
|
|
===== Rcpp attributes =====
|
|
|
|
Rcpp attributes were a key innovation in the 0.10.0; they have matured
|
|
further and have now become the standard way to build code with Rcpp. See
|
|
the dedicated vignette for details.
|
|
|
|
|
|
|
|
==== C++11 Support =====
|
|
|
|
R 3.1.0, to be released in a few month, will permit compilation using C++11,
|
|
the newest C++ standard -- including for packages going to CRAN. Rcpp had
|
|
already supported 'local' builds using C++11 since version 0.10.3, simply add
|
|
|
|
[[Rcpp::plugins(cpp11)]]
|
|
|
|
and Rcpp attributes takes care of the rest.
|
|
|
|
|
|
|
|
===== Memory management =====
|
|
|
|
A number of internal data structures have been rewritten.
|
|
|
|
|
|
|
|
===== Links =====
|
|
|
|
Rcpp site:
|
|
http://www.rcpp.org
|
|
|
|
Rcpp Gallery:
|
|
http://gallery.rcpp.org
|
|
|
|
Dirk's Rcpp page:
|
|
http://dirk.eddelbuettel.com/code/rcpp.html
|
|
|
|
GitHub page:
|
|
https://github.com/RcppCore/Rcpp
|
|
|
|
R-forge project page:
|
|
http://r-forge.r-project.org/projects/rcpp/
|
|
|
|
Google+:
|
|
https://plus.google.com/b/107029540907667241299/107029540907667241299/posts
|
|
|
|
|
|
|
|
===== Support =====
|
|
|
|
Questions about Rcpp should be directed to the Rcpp-devel mailing list
|
|
https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel
|
|
|
|
While we prefer the mailing list, StackOverflow has also become a frequently
|
|
used resource under the [rcpp] tag:
|
|
http://stackoverflow.com/questions/tagged/rcpp
|
|
|
|
|
|
|
|
On behalf of the Rcpp Core team,
|
|
|
|
Dirk Eddelbuettel
|
|
February 2014
|
|
|
|
|
|
|