Revision 9722a1ee732d7085a4041f19bec97d9c47e8b6ac authored by Dirk Eddelbuettel on 02 February 2014, 00:00:00 UTC, committed by Gabor Csardi on 02 February 2014, 00:00:00 UTC
1 parent e1b2bd9
TODO
Current active misfeatures
o Rcpp.package.skeleton() does not work with supplied functions,
eg Rcpp.package.skeleton("foo", list=c("funA", "funB")) ends
in error.
o Sugar ops unit tests on +, -, ... need double, fail with int
o DataFrame::create(Named("a")=b, Named("b")=b) fails with
NumericVectors
Documentation
o Finish the quickref vignette
o Maybe a vignette about stats functions
o Add a vignette about the API
API
o Rcpp::Factor and Rcpp::Ordered
o Fast indexing and g++ 4.5.0 or later: open issue of why this compiler
gets upset when the previous version(s) coped just fine
o Vector::resize
Modules
o Class inheritance. Reflect C++ inheritance at the R level.
Syntactic sugar
o logical indexing, ie NumericVector( LogicalVector )
o recycling : binary operators and math functions of 2 or more arguments
need to recycle their arguments.
o not sure rep should be lazy, i.e. rep( x, 4 ) fetches x[i] 4 times,
maybe we should use LazyVector like in outer to somehow cache the
result when it is judged expensive to calculate
o crossprod
o Vector * Matrix, Matrix * Matrix
o operator%
o operator/ needs to handle the case of division by 0
o matrix functions : apply
o for character vectors: nchar, grepl, sub, gsub
o Compound operators: ++,--,+=, -=, ...
o other statistical distribution functions :
multinom : this only has dmultinom which is handled in R, so
maybe we can skip it
signrank : has the weird call to .C( "signrank_free" ), need
to understand that
wilcox : has the weird call to .C( "wilcox_free" ), need to
understand that
tukey : only has p and q, no r or d
o other random generators:
rmultinom : tricky because it generates a matrix
rnbeta : the R version is implemented in R (not in C),
should we still have it in Rcpp in compile code ?
rnf : idem
rnt : idem
Attributes
o Allow externally specified build directory for sourceCpp (to support
caching across R sessions)
o Proactively detect types that can't be handled by as/wrap and print
a clearer error message
o Add unit tests
o Add random = false parameter to Rcpp::export once we support parsing
key/value pairs in attribute parameters
o Rcpp.package.skeleton should look for Rcpp::depends in cpp_files
and call inline plugins, etc. as necessary to create a package
that can build the cpp file(s). Note that packages exporting plugins
(e.g. Eigen, Armadillo) don't currently provide custom Makevars
so this won't quite work for those packages.
o Detect useDynLib .registration = TRUE and in that case emit .Call
wrappers as symbols rather than strings w/ PACKAGE =
o Solution for the problem of sharing/propagating typedefs to RcppExports
o Allow use of 'inline' keyword on exported functions
o Allow sourceCpp to build an entire directory
o Consider allowing local includes in sourceCpp (but compilation cache
must pay mind to any local includes)
o Support persistence of sourceCpp created functions across sessions
(either via long-lived temp dir or via environment persistence)
o Additional high-level mechanism for specifying additional build
configuration (perhaps cxxflags and libs attributes)
o Verify whether sourceCpp still needs to check for spaces in the path
of source file names on Windows
o Consider adding -Wall and -Wpedantic for sourceCpp builds
Testing
o all r* functions : rnorm, etc ...
o many dpq functions have not been tested yet
o new autogenerated sugar functions: cos, acosh, atan, cos, cosh, log,
log10, sqrt, sin, sinh, tan, tanh
![swh spinner](/static/img/swh-spinner.gif)
Computing file changes ...