Skip to content

Releases: rstudio/renv

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)

renv 1.0.2

15 Aug 15:57
fafea24
Compare
Choose a tag to compare
  • renv now parses package NAMESPACE files for imported dependencies. (#1637)

  • renv no longer locks the sandbox by default.

  • Fixed an issue where renv used the wrong library paths when attempting
    to activate the watchdog. This could cause a 10 second delay when activating
    the sandbox.

renv 1.0.1

10 Aug 16:44
5dc2fc9
Compare
Choose a tag to compare
  • Fixed an issue where authentication headers could be duplicated when
    using the libcurl download method. (#1605)

  • renv::use() now defaults to setting isolate = TRUE when sandbox = TRUE.

  • Fixed an issue where the renv watchdog could fail to load, leading to slowness
    in activating the sandbox on startup. (#1617)

  • Fixed an issue where renv did not display warnings / errors from renv::snapshot()
    when options(renv.verbose = FALSE) was set. The display of these messages
    is now controlled via the renv.caution.verbose R option. (#1607, #1608)

  • renv::load() now notifies the user if the synchronization check took an
    excessive amount of time due to the number of files being scanned in the
    project. (#1573)

  • renv::init() gains the load argument, making it possible to initialize
    a project without explicitly loading it. (#1583)

  • renv now uses a lock when synchronizing installed packages with the cache.
    This should help alleviate issues that can arise when multiple R processes
    are installing and caching packages concurrently. (#1571)

  • Fixed a regression in parsing expressions within R Markdown chunk options. (#1558)

  • Fixed an issue that prevented renv::install() from functioning
    when source-only repositories were included. (#1578)

  • Fixed a logic error in reading RENV_AUTOLOAD_ENABLED. (#1580)

  • renv::restore() no longer runs without prompting on load if the
    library is empty. (#1543)

  • renv::repair() now checks for installed packages which lack a known
    remote source, and updates their DESCRIPTION files if it can infer an
    appropriate remote source. This typically occurs when a package is installed
    from local sources, but appears to be maintained or published on a remote
    repository (e.g. GitHub). This was previously done in renv::snapshot(), but
    we've rolled back that change as the prompting was over-aggressive. (#1574)

  • renv::status() now first reports on uninstalled packages, before reporting on
    used <-> installed mismatches. (#1538)

  • When the RENV_STARTUP_DIAGNOSTICS environment variable is set to TRUE,
    renv now displays a short diagnostics report after a project's autoloader
    has been run. This can be useful when diagnosing why renv is slow to load
    in certain projects. (#1557)

  • renv now ensures the sandbox is activated on load, for R processes which
    are launched with the renv sandbox on the library paths. (#1565)

  • renv::restore() no longer erroneously prompts when determining the packages
    which need to be installed. (#1544)

  • renv::update() now ensures the prompt parameter is properly respected
    during package installation. (#1540)

  • renv::activate() no longer erroneously preserves the previous library
    paths after restarting the session within RStudio. (#1530)

  • Use correct spelling of IRkernel package (#1528).

  • Honor R_LIBCURL_SSL_REVOKE_BEST_EFFORT when using an external curl.exe
    binary to download files. (#1624)

renv 1.0.0

07 Jul 21:46
Compare
Choose a tag to compare

New features

  • New renv::checkout() installings the latest-available packages from a
    repository. For example, renv::checkout(date = "2023-02-08") will install
    the packages available on 2023-02-08 from the Posit
    Package Manager repository.
    The actions argument allows you choose whether a lockfile is generated from
    the provided repositories ("snapshot"), or whether packages are installed
    from the provided repositories ("restore").

  • renv::deactivate() gains a clean argument: when TRUE it will delete
    all renv files/directories, leaving the project the way it was found.

  • renv::init() now uses Posit Public Package Manager
    by default, for new projects where the repositories have not already been
    configured externally. See the options renv.config.ppm.enabled,
    renv.config.ppm.default, and renv.config.ppm.url in ?config for more
    details (#430).

  • renv::lockfile_create(), renv::lockfile_read(), renv::lockfile_write()
    and renv::lockfile_modify() provide a small family of functions for
    interacting with renv lockfiles programmatically (#1438).

  • Handling of development dependencies has been refined. renv::snapshot()
    and renv::status() no longer track development dependencies, while
    install() continues to install them (#1019). Suggested packages listed in
    DESCRIPTION files are declared as development dependencies regardless of
    whether or not they're a "package" project.

  • MRAN integration is now disabled by default, pending the upcoming shutdown
    of Microsoft's MRAN service. Users who require binaries of older R packages
    on Windows + macOS can consider using the instance of CRAN mirrored by the
    Posit Public Package Manager (#1343).

Bug fixes and minor improvements

  • Development versions of renv are now tracked using the Git SHA of the
    current commit, rather than a version number that's incremented on every
    change (#1327). This shouldn't have any user facing impact, but makes
    renv maintenance a little easier.

  • Fixed an issue causing "restarting interrupted promise evaluation" warnings
    to be displayed when querying available packages failed. (#1260)

  • renv::activate() uses a three option menu that hopefully make your choices
    more clear (#1372).

  • renv::dependencies() now discovers R package dependencies inside Jupyter
    notebooks (#929).

  • renv::dependencies() includes packages used by user profile (~/.Rprofile)
    if renv::config$user.profile() is TRUE. They are set as development
    dependencies, which means that they will be installed by install() but not
    recorded in the snapshot.

  • renv::dependencies() only extracts dependencies from text in YAML
    headers that looks like valid R code (#1288).

  • renv::dependencies() no longer treats box::use(module/file) as using
    package module (#1377).

  • renv::init() now prompts the user to select a snapshot type if the project
    contains a top-level DESCRIPTION file (#1485).

  • renv::install(type = "source") now ensures source repositories are used
    in projects using PPM. (#927)

  • renv::install() activates Bioconductor repositories when installing a
    package from a remote (e.g. GitHub) which declares a Bioconductor dependency
    (via a non-empty 'biocViews' field) (#934).

  • renv::install() respects the project snapshot type, if set.

  • renv::install() now keeps source when installing packages from source (#522).

  • renv::install() now validates that binary packages can be loaded after
    installation, in a manner similar to source packages (#1275).

  • renv::install() now supports Bioconductor remotes of the form
    bioc::<BiocVersion>/<Package>, for installing packages from
    a particular version of Bioconductor. Aliases like 'release' and
    'devel' are also supported (#1195).

  • renv::install() now requires interactive confirmation that you want to
    install packages (#587).

  • renv::load() gives a more informative message if a lockfile is present but
    no packages are installed (#353).

  • renv::load() no longer attempts to query package repositories when checking
    if a project is synchronized (#812).

  • renv::load() no longer duplicates entries on the PATH environment variable
    (#1095).

  • renv::restore() can now use pak::pkg_install() to install packages
    when pak integration is enabled. Set RENV_CONFIG_PAK_ENABLED = TRUE
    in your project's .Renviron if you'd like to opt-in to this behavior.
    Note that this requires a nightly build of pak (>= 0.4.0-9000);
    see https://pak.r-lib.org/dev/reference/install.html for more details.

  • renv::restore() now emits an error if called within a project that
    does not contain a lockfile (#1474).

  • renv::restore() correctly restores packages downloaded and installed
    from r-universe (#1359).

  • renv::snapshot() now standardises pak metadata so CRAN packages installed via
    pak look the same as CRAN packages installed with renv or install.packages()
    (#1239).

  • If renv::snapshot() finds missing packages, a new prompt allows you to
    install them before continuing (#1198).

  • renv::snapshot() no longer requires confirmation when writing the first
    snapshot, since that's an action that can easily be undone (by deleting
    renv.lock) (#1281).

  • renv::snapshot() reports if the R version changes, even if no packages
    change (#962).

  • renv::snapshot(exclude = <...>) no longer warns when attempting to exclude
    a package that is not installed (#1396).

  • renv::status() now uses a more compact display when packages have some
    inconsistent combination of being installed, used, and recorded.

  • renv::status() now works more like renv::restore() when package versions
    are different (#675).

  • renv::update() can now update packages installed from GitLab (#136) and
    BitBucket (#1194).

  • renv::settings$package.dependency.fields() now only affects packages
    installed directly by the user, not downstream dependencies of those packages.

  • renv functions give a clearer error if renv.lock has somehow become
    corrupted (#1027).