We have been building a package manager for R inspired by Cargo in Rust. The main idea behind rv is to be explicit about the R version in use as well as declaring which dependencies are used in a rproject.toml file for a given project. There's no renv::snapshot equivalent, everything needs to be declared up front, the config file (and resulting lockfile) is the source of truth. This avoids issue where renv might miss information about the installation and is also easy to tweak some packages, eg install one from source and install suggests from another.<p>If you have used Cargo/npm/any Python package manager/etc, it will be very familiar.
You might want to consider writing a plugin for R with Mise en Place <a href="https://mise.jdx.dev/core-tools.html" rel="nofollow">https://mise.jdx.dev/core-tools.html</a> This would extend your reach and might take some of the heavy lifting out of the project. (At least for the runtime portion. I don't think it will help with package management.)
Maybe some code could be shared with the `uv`[1] to avoid re-implementing same things.<p>[1] <a href="https://github.com/astral-sh/uv">https://github.com/astral-sh/uv</a>
Very cool! Are you planning for there to be a corresponding R package that exposes the high level commands? The popularity of the usethis package really showed the power of keeping people within the R interpreter rather than going back and forth with the terminal. This is so important for a language like R that has so many users without much CS training
I'm curious — does rv support or plan to support per-project isolation of system-level dependencies (e.g., gfortran, libxml2, etc.) like what renv sometimes indirectly requires users to manage outside R? If not, do you have recommendations for managing these in a reproducible way alongside rv?
My biggest issue with R package management is version pinning. If I specify an older version of a package, R will fetch the latest versions of all its dependencies, regardless if they're compatible or not, which leads to manually chasing down and re-installing specific versions of dependencies and sub-dependencies one-by-one.<p>Microsoft's CRAN time machine helped solved this, but I think they've recently shut it down and I don't really trust Posit to not have a version behind a paywall.
Looks interesting, I’m excited to give it a try.<p>Is there any plan to have it create a manifest (like renv.lock) that can be used directly with the posit publishing system?
Ok, this is really promising. I've always found renv to be slightly frustrating to use and it ends up breaking in mysterious ways after a time. rv was a joy to use in a small personal repo.