Zhang, Jitao David
2020-Apr-17 13:14 UTC
[Rd] Demo for linking native routines between R packages
Dear Davis, Thank you a lot for sharing this, and I am happy that I was not the only one who need to do it once to learn:) I proposed to add my repo to the manual. I think it makes sense to add both of ours, if possible, or we could merge them together and add that to the manual. Long-term URL stability is apparently an issue, but I think we may find a solution there. Anyway, thanks a lot for sharing! Best wishes, David On Fri, Apr 17, 2020 at 3:12 PM Davis Vaughan <davis at rstudio.com> wrote:> Nice David! I also wrote up something similar a little while back > https://github.com/DavisVaughan/cexport > > -Davis > > On Fri, Apr 17, 2020 at 7:09 AM Zhang, Jitao David via R-devel < > r-devel at r-project.org> wrote: > >> Dear R developers, >> >> I want to advertise a small project for the educational purpose to show >> people how to link native routines. >> >> In R programming, we need to link to native routines in C, C++, or Fortran >> from the R environment. In most cases, the linking works within one >> package, namely the R code in a package calls the native code in the same >> package. >> >> This is not necessarily always the case. Sometimes, a piece of C or R code >> in a package needs to link to native routines in another R package. >> The *Writing >> R Extensions manual describes *how to do this in the section *Linking to >> native routines in other packages*. However, some details were not clear >> to >> me, and I could find no demo dedicated to this purpose. >> >> Therefore, I decided to build a demo that is available at my Github >> repository Accio/demo-linking-native >> <https://github.com/Accio/demo-linking-native>. Besides implementing the >> linking of native routines between R packages, the project also documents >> issues that I met and how I solved them. >> >> In case you find the demo useful or you have suggestions on how to improve >> it, please let me know. I wonder whether you think it is a good idea to >> suggest to the core team to add the project to the manual so that other >> people can understand the process better with the demo. >> >> In case of questions, let me know. >> >> Best wishes, >> David >> >> -- >> >> *Dr. Jitao David Zhang | ??? | A Computational Biologist in Drug >> Discovery* >> >> *Building 93/3.38, **Tel +41 61 688 62 51* >> >> *Roche Pharmaceutical Research and Early Development >> (pRED) | Pharmaceutical Sciences, BiOmics, BEDA (see http://** >> go.roche.com/BEDA >> <http://go.roche.com/BEDA>**) | Roche Innovation Center Basel | F. >> Hoffmann-La-Roche AG | CH-4070 Basel | Switzerland* >> *Core working hours - No Meetings: Mo/8:30-16:00; Tu/8:30-17:00; >> We/8:30-16:00; Th/9:00-11:30* >> *Available for meetings: Mo/16:00-17:00; We/16:00-17:00**; Th/11:00-17:00; >> Fr/8:00-10:00* >> >> Confidentiality Note: This message is intended only for ...{{dropped:13}} >> >> ______________________________________________ >> R-devel at r-project.org mailing list >> https://stat.ethz.ch/mailman/listinfo/r-devel >> >-- *Dr. Jitao David Zhang | ??? | A Computational Biologist in Drug Discovery* *Building 93/3.38, **Tel +41 61 688 62 51* *Roche Pharmaceutical Research and Early Development (pRED) | Pharmaceutical Sciences, BiOmics, BEDA (see http://**go.roche.com/BEDA <http://go.roche.com/BEDA>**) | Roche Innovation Center Basel | F. Hoffmann-La-Roche AG | CH-4070 Basel | Switzerland* *Core working hours - No Meetings: Mo/8:30-16:00; Tu/8:30-17:00; We/8:30-16:00; Th/9:00-11:30* *Available for meetings: Mo/16:00-17:00; We/16:00-17:00**; Th/11:00-17:00; Fr/8:00-10:00* Confidentiality Note: This message is intended only for ...{{dropped:13}}
Dirk Eddelbuettel
2020-Apr-17 13:40 UTC
[Rd] Demo for linking native routines between R packages
Jitao, Thanks for writing this up. You could add a section on 'prior art' and references. The canonical example always was (c.f. Writing R Extensions) lme4 <-> Matrix which was followed early by the CRAN packages zoo <-> xts upon which I built xts <-> RcppXts with a write-up (from 2013 !!) here: https://gallery.rcpp.org/articles/accessing-xts-api/ Via private mail, I helped then-maintainer Vincent connect expm: expm <-> Matrix and built two packages on CRAN _for the very purpose of exporting API functions to be called_ (which in both cases are from base R as R Core is very careful not get tied into exporting APIs, which is both understandable and a source of added difficulty for us package writers) RApiDatetime RApiSerialize The latter one is use by my RcppRedis package, Travers' very nice qs package and Tim's rpg package. To my reading, the R Community is drifting more and more towards collective amnesia where prior work is (pick any one the following) - ignored altogether - reinvented by another package - shadowed by another package rather than extended, improved and/or cited. That is a collective loss for all of us. It would be nice if you could stear back a little and reference prior related work. My apologies to other packages in this area I have not listed. We really should have a common reference for this. Cheers, Dirk -- http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org
Davis Vaughan
2020-Apr-17 13:44 UTC
[Rd] Demo for linking native routines between R packages
I tried to do this a little. I mentioned xts along with: bdsmatrix https://github.com/cran/bdsmatrix cleancall https://github.com/r-lib/cleancall/ On Fri, Apr 17, 2020 at 9:40 AM Dirk Eddelbuettel <edd at debian.org> wrote:> > Jitao, > > Thanks for writing this up. > > You could add a section on 'prior art' and references. The canonical > example > always was (c.f. Writing R Extensions) > > lme4 <-> Matrix > > which was followed early by the CRAN packages > > zoo <-> xts > > upon which I built > > xts <-> RcppXts > > with a write-up (from 2013 !!) here: > https://gallery.rcpp.org/articles/accessing-xts-api/ > > Via private mail, I helped then-maintainer Vincent connect expm: > > expm <-> Matrix > > and built two packages on CRAN _for the very purpose of exporting API > functions to be called_ (which in both cases are from base R as R Core is > very careful not get tied into exporting APIs, which is both understandable > and a source of added difficulty for us package writers) > > RApiDatetime > RApiSerialize > > The latter one is use by my RcppRedis package, Travers' very nice qs > package > and Tim's rpg package. > > To my reading, the R Community is drifting more and more towards collective > amnesia where prior work is (pick any one the following) > > - ignored altogether > - reinvented by another package > - shadowed by another package > > rather than extended, improved and/or cited. That is a collective loss for > all of us. It would be nice if you could stear back a little and reference > prior related work. My apologies to other packages in this area I have not > listed. We really should have a common reference for this. > > Cheers, Dirk > > -- > http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org >[[alternative HTML version deleted]]
Zhang, Jitao David
2020-Apr-17 14:32 UTC
[Rd] Demo for linking native routines between R packages
Dear Davis and Dirk, Thank you very much for the suggestions, which are very valuable and helpful. I will add references to prior examples, document my project with the clear step-by-step-style document of Davis's project, and come back again to the mailing list. Best wishes, David On Fri, Apr 17, 2020 at 3:40 PM Dirk Eddelbuettel <edd at debian.org> wrote:> > Jitao, > > Thanks for writing this up. > > You could add a section on 'prior art' and references. The canonical > example > always was (c.f. Writing R Extensions) > > lme4 <-> Matrix > > which was followed early by the CRAN packages > > zoo <-> xts > > upon which I built > > xts <-> RcppXts > > with a write-up (from 2013 !!) here: > https://gallery.rcpp.org/articles/accessing-xts-api/ > > Via private mail, I helped then-maintainer Vincent connect expm: > > expm <-> Matrix > > and built two packages on CRAN _for the very purpose of exporting API > functions to be called_ (which in both cases are from base R as R Core is > very careful not get tied into exporting APIs, which is both understandable > and a source of added difficulty for us package writers) > > RApiDatetime > RApiSerialize > > The latter one is use by my RcppRedis package, Travers' very nice qs > package > and Tim's rpg package. > > To my reading, the R Community is drifting more and more towards collective > amnesia where prior work is (pick any one the following) > > - ignored altogether > - reinvented by another package > - shadowed by another package > > rather than extended, improved and/or cited. That is a collective loss for > all of us. It would be nice if you could stear back a little and reference > prior related work. My apologies to other packages in this area I have not > listed. We really should have a common reference for this. > > Cheers, Dirk > > -- > http://dirk.eddelbuettel.com | @eddelbuettel | edd at debian.org >-- *Dr. Jitao David Zhang | ??? | A Computational Biologist in Drug Discovery* *Building 93/3.38, **Tel +41 61 688 62 51* *Roche Pharmaceutical Research and Early Development (pRED) | Pharmaceutical Sciences, BiOmics, BEDA (see http://**go.roche.com/BEDA <http://go.roche.com/BEDA>**) | Roche Innovation Center Basel | F. Hoffmann-La-Roche AG | CH-4070 Basel | Switzerland* *Core working hours - No Meetings: Mo/8:30-16:00; Tu/8:30-17:00; We/8:30-16:00; Th/9:00-11:30* *Available for meetings: Mo/16:00-17:00; We/16:00-17:00**; Th/11:00-17:00; Fr/8:00-10:00* Confidentiality Note: This message is intended only for ...{{dropped:13}}
Maybe Matching Threads
- Demo for linking native routines between R packages
- Demo for linking native routines between R packages
- calling native routines in another package (Sec 5.4.2 of Writing R Extensions)
- Demo for linking native routines between R packages
- registering Fortran routines in R packages