From Hadley's C best practices 
(http://r-pkgs.had.co.nz/src.html#c-best-practices):

> Like with C++, whenever you use C code in your package, you should unload the 
> DLL when the package is unloaded:

    .onUnload <- function (libpath) {
      library.dynam.unload("mypackage", libpath)
    }

Writing R Extensions on the other hand doesn't even mention this (AFAIK). I can 
see how it would be polite to unload the dlls, but doing so seems to cause some 
weird problems for me with packages that are loaded/unloaded/reloaded. 
Additionally, there are some mentions that suggest maybe unloading isn't 
required. From ?library.dynam:

> Note that whether or not it is possible to unload a DLL and then reload a 
> revised version of the same file is OS-dependent: see the ‘Value’ section of 
> the help for dyn.unload.

though this shouldn't affect objects that are not modified. Then there is this 
comment from Brian Ripley in R-devel 
(https://stat.ethz.ch/pipermail/r-devel/2010-November/059062.html):

> Having said all that, my experience is that unloading the DLL often does not 
> help if you need to load it again (and that is why e.g. tcltk does not unload 
> its DLL).

Is it acceptable for packages to leave the C libraries loaded when they are 
unloaded?


I'm on R 3.1.1 on a Mac OS X, though this question is not specific to my system.


I originally asked this on SO 
(http://stackoverflow.com/questions/26691878/must-r-packages-unload-dynamic-libraries-when-they-unload),
 but got crickets.
        [[alternative HTML version deleted]]

______________________________________________
R-devel@r-project.org mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel

Reply via email to