Skip to content

Releases: r-lib/pkgload

pkgload 1.4.0

28 Jun 11:43
Compare
Choose a tag to compare
  • The reset argment of load_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.json file after
    each load_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 your DESCRIPTION file:

    Config/build/compilation-database: true
    

    You'll also want to add compile_commands.json and .cache to 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 complex package = argument
    evaluating to NULL would cause an error (#266).

pkgload 1.3.4

16 Jan 12:41
Compare
Choose a tag to compare
  • On load, pkgload now sets PKGLOAD_PARENT_TEMPDIR to 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

22 Sep 08:10
Compare
Choose a tag to compare
  • dev_topic_index() is now exported (#257).

  • Fix handling of active bindings inside a package during unloading (#255, @klmr).

  • The helpers argument of load_all now defaults to the value
    provided for the export_all arguments. 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.2

16 Nov 15:57
Compare
Choose a tag to compare
  • Fixes for CRAN checks.

pkgload 1.3.1

28 Oct 15:24
Compare
Choose a tag to compare
  • dev_topic_find() is now exported (#215).

  • dev_help() will remind you to run pkgload::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

28 Jun 07:44
Compare
Choose a tag to compare
  • load_all() now calls rlang::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 an attach argument set to TRUE by default (#209).
    If set to FALSE, load_all() creates a new namespace but doesn't
    create a package environment on the search path. In this case, it is
    more similar to loadNamespace() than to library().

  • 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 of
    unload() 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 onLoad hooks 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 onLoad hooks
    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 onAttach hooks are run.

  • Added support for loading a .so or .dll file from the inst
    folder via a new library.dynam() shim (@ethanplunkett, #48).

  • The system.file() shim now fails if you supply a path that starts
    with inst to 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 whether load_all() is
    currently running (#134).

  • .dynLibs() is no longer emptied when package with no DLL is
    unloaded (#176).

  • The ? shim no longer interprets ?"/" as a path (#198).

  • 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

30 Nov 14:44
Compare
Choose a tag to compare
  • Lionel Henry is now the maintainer.

  • load_all() automatically registers package translations, if found.

pkgload 1.2.3

15 Oct 13:07
Compare
Choose a tag to compare
  • 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

06 Apr 16:15
Compare
Choose a tag to compare
  • 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 pkgbuild dependency has been moved to Suggests, 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 the DESCRIPTION file 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

23 Feb 17:46
Compare
Choose a tag to compare
  • 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.