[Rd] Registration of native routines

Avraham Adler avraham.adler at gmail.com
Tue Feb 14 18:28:27 CET 2017


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



More information about the R-devel mailing list