https://github.com/cran/Rcpp
Tip revision: b62824151c733ec9544df164fd22de73ef0d3a3a authored by Dirk Eddelbuettel on 01 October 2012, 06:36:16 UTC
version 0.9.14
version 0.9.14
Tip revision: b628241
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
Current inactive misfeatures
o Bugs found by Doug when using -ltcmalloc from the Google
Performance ToolsOne:
- Rcpp::Dimension tickled from Rcpp::Matrix
- Rcpp::Function and eval
Both should be tickleable using the one-but-last version of
minqa and an R-devel version built with --enable-strict-barrier
Update by DE: Cannot replicate this on my Linux box
o Bob Carpenter post to rcpp-devel on Mar 23 with Rcpp modules,
freshly generated from skeleton, breaking under 64 bit OS X
_And_ while this works for me on R 2.14.2 on 64 bit Linux, it
also breaks for me with R-devel and does not build:
** testing if installed package can be loaded
Error : .onLoad failed in loadNamespace() for 'mypkg2', details:
call: value[[3L]](cond)
error: failed to load module yada from package mypkg2
no binding for "World"
Error: loading failed
Update by DE: Bob now says this may be local, so let's disregard.
Documentation
o Glenn Lawyer post to rcpp-devel on Mar 14 with Rcpp modules patch
o Add a vignette about Rcpp sugar [in progress]
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 const operators, as requested on Rcpp-devel:
http://permalink.gmane.org/gmane.comp.lang.r.rcpp/494
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
Modules
o Class inheritance. If we have Foo and Bar : public Foo, and we expose
both Foo and Bar to R, R level class Bar should enjoy methods of Foo
and the S4 inheritance should reflect the C++ level inheritance
Syntactic sugar
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 The current impl of "diff" might cause problems (e.g. with ifelse) due to
laziness, it is probably best to not make it lazy
o crossprod
o SUGAR_MATH: is there overhead in having the function pointer, should
the macro generate code that statically calls the function ? It would
probably be harder to write/debug
o Vector * Matrix, Matrix * Matrix
o duplicated, unique, count, sum
o operator%
o operator/ needs to handle the case of division by 0
o min, max with specialization of the binary operators, so that we can do
things like this lazily:
min( x ) < 4
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
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