Registration of native routines
On Tue, Feb 14, 2017 at 11:25 AM, Prof Brian Ripley
<ripley at stats.ox.ac.uk> wrote:
Registration of 'native routines' (entry points in compiled code loaded into
R) has been available for over 14 years, but few packages make use of it
(less than 10% of those on CRAN with compiled code).
Registration has similar benefits to name spaces in R code:
- it ensures that the routines used by .C, .Call etc are those in your
package (without needing a PACKAGE argument).
- it avoids polluting the search space for native routines with those from
your package.
- it checks the number of arguments passed to .Call/.External, and the
number and optionally the type for .C/.Fortran.
- it finds native routines faster, especially if 10s of name spaces are
loaded.
Kurt Hornik and I have written a tool to make adding registration much
easier. From NEWS in R-devel
? Package tools has a new function
package_native_routine_registration_skeleton() to assist adding
native-routine registration to a package. See its help and ?5.4.1
of ?Writing R Extensions? for how to use it. (At the time it was
added it successfully automated adding registration to over 90%
of CRAN packages which lacked it. Many of the failures were
newly-detected bugs in the packages, e.g. 50 packages called
entry points with varying numbers of arguments and 65 packages
called entry points not in the package.)
Hello, Dr., Ripley. This is fantastic. Is there a way to install this functionality into an existing 3.3.2 installation, or is it exclusive to R-deve;/R-3.4-to-be? Thank you, Avi