Skip to content

Releases: rstudio/renv

renv 1.1.0

29 Jan 05:50
Compare
Choose a tag to compare

Major Changes

  • renv now includes additional package DESCRIPTION fields in the lockfile.
    This can be useful for validating the provenance of packages recorded in the
    lockfile, and also for applications using renv which would like to
    recompute the hash used for package caching from the lockfile itself.

    If needed, old-style lockfiles can be generated by setting the option
    options(renv.lockfile.version = 1). Note that this version of renv
    remains compatible both with the older (minimal) lockfiles, as well
    as with the newer lockfiles in this release. (#2057)

Other Fixes

  • The renv sandbox is now unlocked on exit after a call to renv::use().
    This should alleviate issues seen where R's attempts to clean up the
    temporary directory could fail due to inadequate permissions on the
    sandbox directory. (#2076)

  • Fixed an issue where renv::restore() did not respect the named repository
    within the lockfile when installing packages from the archives of the
    configured package repositories. (#2081)

  • Fixed an issue where renv::snapshot() could fail if invoked within
    a project containing empty or invalid .ipynb files. (#2073)

  • Fixed an issue where R package installation could fail if the project
    depended on a package whose current version available from the configured
    package repositories required on a newer version of R than what was currently
    installed, even if that package need not be updated. (#2071)

  • Fixed an issue where RENV_CONFIG_EXTERNAL_LIBRARIES was incorrectly
    split when using Windows paths. (#2069)

  • Fixed an issue where renv failed to restore packages installed from
    r-universe when the associated lockfile record had no RemoteRef field.
    (#2068)

  • renv now detects dependencies from usages of utils::citation(). (#2047)

  • Fixed an issue where packages installed from r-universe via an explicit
    URL remote could not be restored. (#2060)

  • Fixed an issue where the repositories provided to renv::init() were ignored
    when also initializing renv with a specific version of Bioconductor.

  • renv::install() gains the include parameter, which can be useful when
    you'd like to install a subset of dependencies within a project while also
    respecting any declared remotes in that project's DESCRIPTION file. (#2055)

  • Fixed an issue where renv could fail to check for updates for packages
    installed using pak without an explicit branch specified. (#2040)

  • renv::use() no longer re-installs packages which are already installed
    and compatible with the requested packages. (#2044)

  • Fixed an issue where renv::init() could fail when using named remotes
    in a DESCRIPTION file's Remotes: field. (#2055)

  • Fixed an issue where ignore rules of the form !*.* were not parsed
    and handled correctly during dependency discovery. (#2052)

  • Fixed an issue where renv erroneously reported that installed packages were
    cached when the cache was not writable. (#2041).

  • renv now supports updating of currently-installed packages via renv::install()
    when configured to use pak. (#2037)

  • Fixed an issue where renv library paths were not properly reset following
    a suspend / resume in RStudio Server. (#2036)

  • renv::run() gains the args parameter, which can be used to pass command-line
    arguments to a script. (#2015)

  • renv now infers a dependency on rmarkdown and knitr for R scripts which
    include YAML front-matter. (#2023)

  • The performance of renv's built-in JSON reader has been improved. (#2021)

  • Fixed an issue where renv could erroneously create a binding called 'object'
    in the global environment on startup. (#2017)

renv 1.0.11

12 Oct 18:18
0638171
Compare
Choose a tag to compare
  • Fixed an issue where headers were not properly passed to available.packages()
    during renv bootstrap. (#1942)

  • renv now assumes that Artifactory package repositories will use a CRAN-like
    layout of packages for packages in the archive. (#1996)

  • renv now includes compiled extensions on Linux + macOS. These
    extensions are primarily used to improve the performance of
    renv::dependencies() and other static analysis code.
    Support for Windows may come in a future release.

  • Fixed an issue where renv::snapshot() could fail if the project
    contained a call to module() with no arguments. (#2007)

  • On Linux, renv now emits a message on load if the R temporary directory
    is within a folder that has been mounted as 'noexec'. This message can be
    suppressed by setting the RENV_TEMPDIR_NOEXEC_CHECK=FALSE environment
    variable.

renv 1.0.10

05 Oct 05:50
0687c78
Compare
Choose a tag to compare
  • Fixed a performance regression in renv::dependencies(). (#1999)

  • Fixed an issue where renv tests could fail if the parallel package was
    loaded during test execution.

  • renv now determines a package repository's type through the HTTP headers
    provided when accessing src/contrib/PACKAGES. This is mainly relevant
    when detecting Nexus and Artifactory repositories.

renv 1.0.9

23 Sep 22:35
ed605b4
Compare
Choose a tag to compare
  • Fixed an issue where repository URLs were inappropriately transformed into
    binary repository URLs on Linux. (#1991)

  • Fixed an issue where code following source("renv/activate.R") in the project
    .Rprofile was not invoked for projects using RStudio. (#1990)

renv 1.0.8

20 Sep 17:24
28d1067
Compare
Choose a tag to compare
  • renv now infers a dependency on the ragg package when the ragg_png device
    is used in R Markdown / Quarto documents, for documents using the code
    knitr::opts_chunk$set(dev = "ragg_png"). (#1985)

  • renv now automatically generates a lockfile when loading a project containing
    a manifest.json file (typical for application bundles published to Posit Connect).
    (#1980, @toph-allen)

  • renv::install() now errs if an incompatible type argument is provided.

  • renv::checkout() now also checks out the version of renv available
    and associated with the requested snapshot date. (#1966)

  • Fixed an issue where renv::hydrate() did not hydrate packages which
    were also listed as dependencies within a project's DESCRIPTION file.
    (#1970)

  • Fixed an issue where renv::checkout() omitted some fields from lockfile
    records when using actions = c("snapshot", "restore"). (#1969)

  • renv gains the function renv::retrieve(), which can be used to download
    packages without installing them. This is primarily useful in CI / CD scenarios,
    where you might want to download packages in a single stage before attempting
    to install / restore them. (#1965)

  • renv now preserves Remote fields present on packages installed from
    public package repositories (e.g. https://r-universe.dev/). (#1961)

  • Fixed an issue where renv::load() could fail to load an alternate project
    when options(renv.config.autoloader.enabled = FALSE) was set. (#1959)

  • renv now emits clickable hyperlinks for runnable code snippets and help,
    for front-ends which support the ide:run and ide:help ANSI escapes.

  • renv::init(bioc = "<version>") now prompts the user in interactive sessions
    when requesting a version of Bioconductor which is not compatible with the
    current version of R. (#1943)

  • renv::restore() gains the transactional argument, which can be
    used to control whether renv will allow successfully-installed
    packages remain in the project library even if a package fails
    to install during a later step. (#1109)

  • renv now infers a dependency on the xml2 package for projects
    using the testthat::JunitReporter for tests. (#1936)

  • Fixed an issue where renv::dependencies() could emit a warning
    when attempting to parse chunks using chunk options like
    #| eval: c(1, 2). (#1906)

  • renv::install() now properly delegates the type and rebuild
    arguments to pak when options(renv.config.pak.enabled = TRUE)
    is set. (#1924)

  • renv now infers a dependency on the svglite package if it detects
    calls of the form ggsave(filename = "path.svg"). (#1930)

  • renv now supports setting of GitHub authentication credentials via
    any of GITHUB_TOKEN, GITHUB_PAT, and GH_TOKEN. (#1937)

  • renv now also passes any custom headers available to
    utils::available.packages() during bootstrap. (#1942)

  • Fixed an issue where renv could fail during installation of packages
    stored within repository sub-directories, if that repository also
    contained a top-level DESCRIPTION file. (#1941)

  • renv now normalizes lockfile entries for Bioconductor packages installed
    via pak::pkg_install(), to help prevent spurious diffs being produced
    via renv::status(). (#1920)

  • renv::install() now respects the prompt parameter when pak is enabled,
    as via options(renv.config.pak.enabled = TRUE). (#1907)

  • Fixed an issue with renv's pak integration where renv could install the
    wrong version of a GitHub package during restore if
    options(renv.config.pak.enabled = TRUE) was set. (#1883)

  • renv no longer interacts with the user during autoloading, which coincides
    with R startup. If the IDE offers a session init hook (RStudio does),
    loading is deferred until startup is complete and interaction is possible.
    Otherwise, any suggested renv actions, such as renv::restore(), are emitted
    as a message for the user to act on. (#1879, #1915).

  • Fixed an issue where installation of packages from local sources, as via
    install("<package>", repos = NULL, type = "source"), could fail. (#1880)

  • A new function, renv::lockfile_validate(), can be used to validate your renv.lock
    against a default or custom schema. (#1889)

renv 1.0.7

12 Apr 04:57
Compare
Choose a tag to compare
  • Fixed an issue where renv's activate script failed to report version
    conflict errors when starting up. (#1874)

renv 1.0.6

11 Apr 05:36
Compare
Choose a tag to compare
  • Fixed an issue where downloads could fail with curl >= 8.7.1. (#1869)

  • Fixed an issue where renv::snapshot() did not properly normalize
    package records generated from packages installed using the pak
    package, e.g. via pak::pkg_install("cran::<package>").

  • Fixed an issue where renv could incorrectly prompt the user to record
    a version of renv installed from GitHub in some cases. (#1857)

  • renv::load() now delegates to base::load() when it detects that the
    call was likely intended for base::load(), but renv::load() was used
    instead (e.g. because base::load() was masked by renv::load()).

  • renv::update() gains the lock argument, which can be used to
    instruct renv to automatically update the lockfile after the requested
    packages have been updated. (#1849)

  • Fixed an issue where renv could fail to update the project autoloader
    after calling renv::upgrade(). (#1837)

  • Fixed an issue where attempts to install binary packages from older
    PPM snapshots could fail. (#1839)

  • renv now uses a platform-specific prefix on Linux for library and
    cache paths by default with R (>= 4.4.0). This is equivalent to setting
    RENV_PATHS_PREFIX_AUTO = TRUE. If necessary, this behavior can be
    disabled by setting RENV_PATHS_PREFIX_AUTO = FALSE in an appropriate
    R startup file. (#1211)

renv 1.0.5

29 Feb 05:20
0e780cb
Compare
Choose a tag to compare
  • renv now only writes a .renvignore file into the cache directory
    if the cache appears to be part of the current project.

  • renv now reports missing system libraries as part of its ABI
    checks in renv::diagnostics().

  • Fixed an issue where renv::install(lock = TRUE) produced lockfiles
    containing records with extraneous data. (#1828)

renv 1.0.4

21 Feb 22:13
38a58fe
Compare
Choose a tag to compare
  • renv::install() gains the lock argument. When TRUE, the project
    lockfile will be updated after the requested packages have been
    successfully installed. (#1811)

  • renv now supports the use of GitHub Enterprise servers with the
    gitcreds package for authentication credentials. (#1814)

  • renv::dependencies() now treats #| eval: !expr <...> chunk options
    as truthy by default, implying that such chunks are scanned for their
    R package dependencies. (#1816)

  • renv::dependencies() now requires usages of the import
    package to be namespace-qualified in order to be handled via static
    analysis; that is, import::from(<pkg>) is parsed for dependencies,
    but from(pkg) is not. (#1815)

  • renv::load() gains the profile argument, allowing one to
    explicitly load a specific profile associated with an renv project.
    See vignette("profiles", package = "renv") or
    https://rstudio.github.io/renv/articles/profiles.html
    for more details.

  • renv::dependencies() no longer includes R dependency versions
    declared from a DESCRIPTION file in its output. (#1806)

  • Fixed an issue where renv could fail to infer dependencies from
    R Markdown code chunks using engine 'R' (upper-case) rather than
    'r' (lower-case). (#1803)

  • Fixed an issue where renv did not report out-of-sync packages when
    one or more packages used in the project were not installed. (#1788)

  • Fixed an issue where renv could over-aggressively activate P3M
    repositories when initializing a project. (#1782)

  • renv::status() now notifies the user if the version of R recorded in
    the lockfile does not match the version of R currently in use. (#1779)

  • Fixed an issue where packages could appear multiple times in the lockfile,
    if that package was installed into multiple library paths. (#1781)

  • Installation of historical binaries of packages is once again enabled,
    now using the Posit Public Package Manager (P3M)
    service instead of Microsoft's (now defunct) MRAN service.

  • renv::init() now respects the Remotes: field declared in a project's
    DESCRIPTION file, if any. (#1522)

  • renv::embed() now supports Quarto Markdown (.qmd) files. (#1700)

  • renv now sets the R_INSTALL_TAR environment variable to match the default
    tar executable (if any) when installing packages. (#1724)

  • renv now uses --ssl-revoke-best-effort by default when downloading files
    using curl on Windows. (#1739)

  • Fixed an issue where renv::install() could fail to detect incompatible
    recursive package dependencies. (#1671)

  • renv::install() now records remote information for packages installed from
    CRAN-like repositories, and uses that information when generating a lockfile
    and restoring those packages. This helps ensure that packages installed within
    an renv project via calls like renv::install("<pkg>", repos = "<repos>") can
    still be successfully restored in future sessions. (#1765)

  • renv::install() now lazily resolves project remotes. (#1755)

  • renv::init() now respects Remotes declared within a project's DESCRIPTION
    file, if any.

  • Calling renv::activate() without explicitly providing the profile argument
    now preserves the current profile, if any. Use renv::activate(profile = "default")
    if you'd like to re-activate a project using the default profile. (#1217)

  • Fixed an issue where renv would try to prompt for the installation of
    BiocManager when activating a project using Bioconductor. (#1754)

  • Fixed an issue where directories containing a large number of files could
    cause renv to fail to activate a project. (#1733)

  • Expanded the set of Linux distributions detected for automatic transformation
    of Posit Package Manager URLs to install binary packages. renv now correctly
    detects Red Hat Enterprise Linux 9, Rocky Linux 8 and 9, SLES 15 SP4 and SP5,
    Debian 11 and 12, AlmaLinux 8 and 9, and Amazon Linux 2. (#1720, #1721)

renv 1.0.3

20 Sep 15:23
e49d9be
Compare
Choose a tag to compare
  • Fixed an issue where renv could warn the project appeared to be out-of-sync
    when using packages installed without an explicit source recorded. (#1683)

  • renv::install() gains the exclude argument, which can be useful when
    installing a subset of project dependencies.

  • Fixed an issue where PPM repositories were not appropriately transformed
    into the correct binary repository in renv::restore() when using pak.

  • renv::init() no longer prompts the user for the intended action for
    projects containing a library with only renv installed. (#1668)

  • Fixed an issue where non-interactive usages of renv::init() could fail
    with projects containing a DESCRIPTION file. (#1663)

  • Fixed an issue that could cause code within a project .Rprofile to execute
    before the project had been loaded in RStudio. (#1650)

  • renv::snapshot() and renv::status() gain the dev argument. This
    can be used when you'd like to capture package dependencies from
    the Suggests field of your package's DESCRIPTION file. (#1019)