-
Notifications
You must be signed in to change notification settings - Fork 29
Extend Rcpp
Summary: Extend the Rcpp package.
Description: Rcpp
has become the most-widely used R extension package as almost 400 packages across CRAN and BioConductor use it. While fairly mature, certain aspects could use either an update, refactoring or extension.
Related work: R itself offers a C API described in Writing R Extensions; Rcpp offers an easier-to-use alternative.
Potential tasks: Each one of these could be a suitable topic:
- Add support for
R_xlen_t
: R itself can now support vectors indices larger than 2^31-1. A new index type (based ondouble
to provide a wider range)R_xlen_t
is available, but not yet used in Rcpp. This task consists of carefully replacing use ofR_len_t
(or evenint
) in existing Rcpp classes in order to support larger vectors. This is a difficult topic as it involves changes in Rcpp itself which must be applied very carefully to not break an API now used by over 350 CRAN packages. - Character object with utf8 support: Rcpp does not offer wide characters. R now does, at least on some platforms. It would be nice to have Rcpp support this as well. This project would scope out and prototype this. This too is a very hard topic as it also OS-dependent with Windows once again behaving differently.
- Rethinking DataFrame: Rcpp contains a class for
data.frame
objects. Over the years a number of limitations have come up. Some other projects have implemented alternatives: data.table using C, dplyr using C++ on top of Rcpp. This project would scope out and prototype a new DataFrame-alike class for Rcpp. This may be an easier topic as the addition can also be tested and refined in add-on package. - You name it. Other topics are welcome, particularly issues present in the open issue ticket or on the mailing list (also via nicer Gmane interface) but we strongly recommend prior discussion.
Skills required: Somewhat serious C++ and R chops are needed, as well as familiarity with the standard git commands.
Test: Fork the package from GitHub and create a pull-request implementing a fix for an open issue ticket of your choice.
Mentor: Dirk Eddelbuettel ([@](mailto:edd {at} debian {dot} org)) and possibly other RcppCore members