Howdy, On 6 June 2017 at 14:15, Wolf Vollprecht wrote: | I put together a small proof of concept for the xtensor R bindings over the | weekend. | It lives here: https://github.com/QuantStack/xtensor-r
Nice! Not sure I have spare cycles right now for this but that is very welcome. | xtensor is an exciting C++ library which provides a unified C++ tensor | interface for Python/NumPy, Julia and soon R. | | My biggest question is in the memory management of R. Maybe you could do a | quick code review? | Is it enough to call Rcpp_release_object with the SEXP in the destructor of the | rxarray (which I haven't implemented yet)? | Also for the shape of the rxarray, I allocate another R-vector. Is that going | to get destroyed upon destruction of the R-array? The general idea when working with R objects is that -- on the way in from R to the C++ functions we construct object such that the existing memory (from R) is used; one example is how RcppArmadillo uses the 'advanced' constructors of Armadillo allowing to operate without copies; hence R managed memory is used while C++ functions are called; in general this side of the conversion is the templates as<>() converters; -- on the way back we use the *alloc functions from the C-level API of R to construct objects that use memory from R's pool, once we return these objects to R as SEXP they are indistinguishable to R from its own; these are the wrap() functions (and I think we may make on occassion make "one final copy" at his level, but I'd have to double-check). I haven't had a chance to look at what Wes is doing with Apache Arrow, and what is happening with xtensor -- so thanks for getting the ball rolling. Dirk -- http://dirk.eddelbuettel.com | @eddelbuettel | e...@debian.org _______________________________________________ Rcpp-devel mailing list Rcpp-devel@lists.r-forge.r-project.org https://lists.r-forge.r-project.org/cgi-bin/mailman/listinfo/rcpp-devel