Changelog
Source:NEWS.md
pkgload 1.4.1
load_all()now supports explicitdebugoption to control using debug compiler flags (#224, @assaron).The generator of
compile_commands.jsonnow works with packages that compile extra libraries such as ragg.The generator of
compile_commands.jsonnow works with sources in subdirectories (#308, @krlmlr).The generator of
compile_commands.jsonnow checks for existingR_SHARE_DIRandR_INCLUDE_DIRenvironment variables (#287, #296, @TimTaylor and @shikokuchuo).The generator of
compile_commands.jsonis now more reliable in the presence of extra whitespace inmake’s output (#288, @TimTaylor).The generator of
compile_commands.jsonnow uses escaped double quotes for LinkingTo packages to ensure valid argument strings when parsed on Windows (#305, @tylermorganwall).
pkgload 1.4.0
CRAN release: 2024-06-28
The
resetargument ofload_all()is no longer supported because preserving the namespace requires unlocking its environment, which is no longer possible in recent versions of R. It should no longer be necessary as the performance issues caused by resetting the namespace were resolved a while ago.-
New experimental feature for generating a
compile_commands.jsonfile after eachload_all(). This file is used by LSP servers such as clangd to provide intellisense features in your native files. To enable it, add this directive to yourDESCRIPTIONfile:Config/build/compilation-database: trueYou’ll also want to add
compile_commands.jsonand.cacheto your gitignore and Rbuildignore files.To accomplish all these steps, feel free to use the unexported function
pkgload:::use_compilation_db(). It will eventually be exported from the usethis package. load_all()now includes a link to the exact location when loading failed (@olivroy, #282).User onload hooks are now passed a library path.
Fixed an error when updating packages on load (@olivroy, #261).
Fixed a bug in
shim_help()where a complexpackage =argument evaluating toNULLwould cause an error (#266).
pkgload 1.3.4
CRAN release: 2024-01-16
On load, pkgload now sets
PKGLOAD_PARENT_TEMPDIRto the temporary directory used in the current process. This provides a convenient place to cache results for functions used in subprocesses (e.g.devtools::test(),devtools::document()).Fixes for Debian packaging.
pkgload 1.3.3
CRAN release: 2023-09-22
dev_topic_index()is now exported (#257).Fix handling of active bindings inside a package during unloading (#255, @klmr).
The
helpersargument ofload_allnow defaults to the value provided for theexport_allarguments. This makes the behaviour safer by default (#244).pkgload now depends unconditionally on pkgbuild (#249).
load_all()no longer standardises version number in namespace metadata (#231).New
pkg_version_raw()to get raw package version as a string.
pkgload 1.3.1
CRAN release: 2022-10-28
dev_topic_find()is now exported (#215).dev_help()will remind you to runpkgload::load_all()if no in-development packages are found (#221).Shimmed
?now works even if you’ve renamed the documentation topic (#220).dev_help()now works with an RStudio daily to deliver a rendered development documentation that includes working images and links (#228).
pkgload 1.3.0
CRAN release: 2022-06-27
-
load_all()now callsrlang::check_installed()to prompt whether to install missing packages.Outdated and missing dependencies are installed using pak if installed. If not, the remotes package is used if installed. Otherwise
install.packages()is used as a last resort but this method does not support Remotes fields. load_all()gains anattachargument set toTRUEby default (#209). If set toFALSE,load_all()creates a new namespace but doesn’t create a package environment on the search path. In this case, it is more similar toloadNamespace()than tolibrary().Improved the way help pages are displayed in RStudio. This makes the behaviour within and outside RStudio consistent and fixes issues with Rd macros (#120).
unregister()is now exported. This is a gentler version ofunload()which removes the package from the search path, unregisters methods, and unregisters the namespace. However it doesn’t try to unload the namespace or its DLL so that dangling references keep working.User
onLoadhooks are now run after exports have been populated. This allows the hook to use exported functions.-
The loaded namespace is now locked just before user
onLoadhooks are run. This better reproduced the namespace sealing behaviour of regular loading.The package environment environment is now locked as well before both the user and package
onAttachhooks are run. Added support for loading a .so or .dll file from the
instfolder via a newlibrary.dynam()shim (@ethanplunkett, #48).The
system.file()shim now fails if you supply a path that starts withinstto better reproduce the behaviour with installed packages (#104).load_all()now imports its dependencies lazily to avoid parallel installation issues (#89).Unknown Rd macros no longer trigger a warning when building the package topic index (#119).
load_all(compile = TRUE)now forces a full recompilation (#93).The advice about running
rm()to remove conflicts with objects in the global environment is now clickable in RStudio (#199).New
is_loading()predicate to detect whetherload_all()is currently running (#134)..dynLibs()is no longer emptied when package with no DLL is unloaded (#176).rstudioapi is no longer a hard dependency of pkgload (#187).
Errors thrown in user hooks are now demoted to a warning condition. Previously they were demoted using
try(), making it harder to debug them.load_all()correctly re-loads modified translations, avoiding the usual gettext behaviour.
pkgload 1.2.4
CRAN release: 2021-11-30
Lionel Henry is now the maintainer.
load_all()automatically registers package translations, if found.
pkgload 1.2.3
CRAN release: 2021-10-13
pkgload now forces all bindings on unload. This fixes errors and inconsistencies when dangling references force lazy bindings after unload or reload.
load_all()now restores S3 methods registered by third party packages (#163).load_dll()will now preserve the DLL name when loading instead of always using the package name. This allows packages to include DLL’s with different names (#162, @dfalbel).
pkgload 1.2.1
CRAN release: 2021-04-06
unload()no longer unregisters methods for generics of the package being unloaded. This way dangling references to generics defined in the stale namespace still work as expected (r-lib/vctrs#1341).load_all()will now work for packages that have testthat tests but do not have testthat installed (#151)The
pkgbuilddependency has been moved toSuggests, as it is only needed for packages with compiled code.load_all()will now work for packages that have testthat tests but do not have testthat installed (#151)load_all(warn_conflicts = TRUE)becomes more narrow and only warns when a function in the global environment masks a function in the package, consistent with the docs (#125, #143 @jennybc).load_all()no longer does a comprehensive check on theDESCRIPTIONfile when loading, instead just checking that it exists and starts with Package (#149, @malcolmbarrett)unload()no longer warns when it can’t unload a namespace.
pkgload 1.2.0
CRAN release: 2021-02-23
Fix test failure in R 4.1 with regards to S4 method registration
-
load_all()now preserves existing namespaces in working order. In particular, it doesn’t unload the package’s shared library and keeps it loaded instead. When reloading, a copy of the SO for the new namespace is loaded from a temporary location. These temporary SOs are only unloaded on GC and deleted from their temporary location via a weak reference attached to the namespace.This mechanism ensures that lingering references to the namespace keep working as expected. Consequently the namespace propagation routine that was added to pkgload as a workaround has been removed.
Note that
.Call()invocations that pass a string symbol rather than a structured symbol may keep crashing, because R will look into the most recently loaded SO of a given name. Since symbol registration is now the norm, we don’t expect this to cause much trouble. -
load_all()no longer forces all bindings of a namespace to avoid lazy-load errors. Instead, it removes exported S3 methods from the relevant tables.This improves the loading behaviour with packages that define objects in their namespaces lazily (e.g. with
delayedAssign()).This also makes
load_all()more predictable after a method has been removed from the package. It is now actually removed from the generic table. It would previously linger until R was restarted.
If
load_all()attaches testthat, it automatically suppresses conflicts.
pkgload 1.1.0
CRAN release: 2020-05-29
dev_example()now works after removing an inconsistent call toload_all()(@riccardoporreca, #122).load_all()now issues a warning if exported objects conflict with objects defined in the global environment (#112)run_example()argumentsrunandtestare deprecated in favor of the (hopefully) more clearrun_dontrunandrun_donttest(#107).Internal fixes for compatibility with the future 4.1.0 release.
pkgload 1.0.2
CRAN release: 2018-10-29
shim_question()now works for topics from the R base package that are passed with the double colon operator (e.g.base::min) (@mdequeljoe, #99).load_all()now allows using explicitly qualified, exported names in test helpers (@klmr, #95).load_all()gains acompileargument which controls more finely whether to compile the code or not. Therecompileargument is now deprecated and will be removed in a future version of pkgload.
pkgload 1.0.1
CRAN release: 2018-10-11
unload()now only removes S4 classes which were generated in the package being unloaded (#75)help()will no longer error when trying to load package level help (#67).Trailing slashes now removed from all paths, which fixes issues on Windows (#73).
load_dll()now fixed in R-devel (#77).The help shim’s now work for
:::inputs (#72).
pkgload 1.0.0
CRAN release: 2018-07-07
load_all()now updates imports of dependent packages when a package is reloaded (#59).load_all()now assignsDESCRIPTION/Dependsto.Dependsobject of package environment. (@yiufung pkgload#61)load_all()now attachestestthatif theattach_testthatoption isTRUE. This allowsload_all()to more closely mimic the testing environment. (#56)check_dep_version()andcheck_suggested()are now exported.check_dep_version()now emits a warning and returnsFALSErather than aborting. (#47)Package imports are now exported when using
load_all(). This behavior can be disabled by usingload_all(export_imports = FALSE).The
as.package()andis.package()functions have been removed.load_code(),load_data(),load_dll(),load_all(),parse_ns_file()all now take an explicit path rather than a path or apackageobject.imports_env(),ns_env(),pkg_env()andunload()now take a package name rather than a path or apackageobject.run_example()now works on R 3.1.unload()now unloads S4 classes for packages loaded withlibrary()as well asload_all()(#46).load_all()gains ahelpersoption to specify whether or not to source testthat helpers. (@pitakakariki devtools #1202)load_all()now sources the testthat helpers in the namespace environment rather than the package environment (#40).load_all()now sets theNOT_CRANenvironment variable when it sources testthat helpers. It also setsDEVTOOLS_LOADto “true” so that you can check whether they are run during package loading.dev_topic_path()now only returns the last path found, fixing an error when a package has both a package function level help with the same name. (#21)New function
is_dev_package()to determine if a given package has been loaded bypkgload::load_all()(#2).load_all()no longer updates the collate directive. Instead this functionality has been moved todevtools::document().dev_help()now optionally takes a character vector of packages to search within. This replacesfind_topic().dev_topic_index_reset()is now exported, and allows you to reset the topic index associated with a given package.Added a
NEWS.mdfile to track changes to the package.Initial release from code spun off from devtools