unload()
attempts to cleanly unload a package, including unloading
its namespace, deleting S4 class definitions and unloading any loaded
DLLs. Unfortunately S4 classes are not really designed to be cleanly
unloaded, and so we have to manually modify the class dependency graph in
order for it to work - this works on the cases for which we have tested
but there may be others. Similarly, automated DLL unloading is best tested
for simple scenarios (particularly with useDynLib(pkgname)
and may
fail in other cases. If you do encounter a failure, please file a bug report
at https://github.com/r-lib/pkgload/issues.
unregister()
is a gentler version of unload()
which removes the
package from the search path, unregisters methods, and unregisters
the namespace. It doesn't unload the namespace or its DLL to keep
it in working order in case of dangling references.