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]]
______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-devel