https://github.com/cran/Rcpp
Raw File
Tip revision: 7c6197c31a42aeb6154ea945d114de0492b4145b authored by Dirk Eddelbuettel on 24 June 2013, 16:24:59 UTC
version 0.10.4
Tip revision: 7c6197c
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

    o   Single char variables do not seem to covered correctly by as<>()
        and wrap() (cf http://stackoverflow.com/questions/16535899/)

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   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	Vector * Matrix, Matrix * Matrix

    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

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    
back to top