Releases: rstudio/renv
renv 1.1.0
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 usingrenv
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 ofrenv
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 torenv::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 noRemoteRef
field.
(#2068) -
renv
now detects dependencies from usages ofutils::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 initializingrenv
with a specific version of Bioconductor. -
renv::install()
gains theinclude
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'sDESCRIPTION
file. (#2055) -
Fixed an issue where
renv
could fail to check for updates for packages
installed usingpak
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'sRemotes:
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 viarenv::install()
when configured to usepak
. (#2037) -
Fixed an issue where
renv
library paths were not properly reset following
a suspend / resume in RStudio Server. (#2036) -
renv::run()
gains theargs
parameter, which can be used to pass command-line
arguments to a script. (#2015) -
renv
now infers a dependency onrmarkdown
andknitr
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
-
Fixed an issue where headers were not properly passed to
available.packages()
duringrenv
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 tomodule()
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 theRENV_TEMPDIR_NOEXEC_CHECK=FALSE
environment
variable.
renv 1.0.10
-
Fixed a performance regression in
renv::dependencies()
. (#1999) -
Fixed an issue where
renv
tests could fail if theparallel
package was
loaded during test execution. -
renv
now determines a package repository's type through the HTTP headers
provided when accessingsrc/contrib/PACKAGES
. This is mainly relevant
when detecting Nexus and Artifactory repositories.
renv 1.0.9
renv 1.0.8
-
renv
now infers a dependency on theragg
package when theragg_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
amanifest.json
file (typical for application bundles published to Posit Connect).
(#1980, @toph-allen) -
renv::install()
now errs if an incompatibletype
argument is provided. -
renv::checkout()
now also checks out the version ofrenv
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'sDESCRIPTION
file.
(#1970) -
Fixed an issue where
renv::checkout()
omitted some fields from lockfile
records when usingactions = c("snapshot", "restore")
. (#1969) -
renv
gains the functionrenv::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 preservesRemote
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
whenoptions(renv.config.autoloader.enabled = FALSE)
was set. (#1959) -
renv
now emits clickable hyperlinks for runnable code snippets and help,
for front-ends which support theide:run
andide: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 thetransactional
argument, which can be
used to control whetherrenv
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 thexml2
package for projects
using thetestthat::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 thetype
andrebuild
arguments topak
whenoptions(renv.config.pak.enabled = TRUE)
is set. (#1924) -
renv
now infers a dependency on thesvglite
package if it detects
calls of the formggsave(filename = "path.svg")
. (#1930) -
renv
now supports setting of GitHub authentication credentials via
any ofGITHUB_TOKEN
,GITHUB_PAT
, andGH_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
viapak::pkg_install()
, to help prevent spurious diffs being produced
viarenv::status()
. (#1920) -
renv::install()
now respects theprompt
parameter whenpak
is enabled,
as viaoptions(renv.config.pak.enabled = TRUE)
. (#1907) -
Fixed an issue with
renv
'spak
integration whererenv
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 asrenv::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 yourrenv.lock
against a default or custom schema. (#1889)
renv 1.0.7
- Fixed an issue where
renv
's activate script failed to report version
conflict errors when starting up. (#1874)
renv 1.0.6
-
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 thepak
package, e.g. viapak::pkg_install("cran::<package>")
. -
Fixed an issue where
renv
could incorrectly prompt the user to record
a version ofrenv
installed from GitHub in some cases. (#1857) -
renv::load()
now delegates tobase::load()
when it detects that the
call was likely intended forbase::load()
, butrenv::load()
was used
instead (e.g. becausebase::load()
was masked byrenv::load()
). -
renv::update()
gains thelock
argument, which can be used to
instructrenv
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 callingrenv::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 settingRENV_PATHS_PREFIX_AUTO = FALSE
in an appropriate
R startup file. (#1211)
renv 1.0.5
-
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 inrenv::diagnostics()
. -
Fixed an issue where
renv::install(lock = TRUE)
produced lockfiles
containing records with extraneous data. (#1828)
renv 1.0.4
-
renv::install()
gains thelock
argument. WhenTRUE
, 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,
butfrom(pkg)
is not. (#1815) -
renv::load()
gains theprofile
argument, allowing one to
explicitly load a specific profile associated with anrenv
project.
Seevignette("profiles", package = "renv")
or
https://rstudio.github.io/renv/articles/profiles.html
for more details. -
renv::dependencies()
no longer includesR
dependency versions
declared from aDESCRIPTION
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 theRemotes:
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
usingcurl
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 likerenv::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'sDESCRIPTION
file, if any. -
Calling
renv::activate()
without explicitly providing theprofile
argument
now preserves the current profile, if any. Userenv::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
causerenv
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
-
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 theexclude
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 inrenv::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()
andrenv::status()
gain thedev
argument. This
can be used when you'd like to capture package dependencies from
the Suggests field of your package's DESCRIPTION file. (#1019)