frontpage.
newsnewestaskshowjobs

Made with ♥ by @iamnishanth

Open Source @Github

fp.

Open in hackernews

Show HN: Rv, a Package Manager for R

https://github.com/A2-ai/rv
76•Keats•6mo ago
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.

If you have used Cargo/npm/any Python package manager/etc, it will be very familiar.

Comments

mbeavitt•6mo ago
Can this be used to effectively create R environments? I’m desperate for such a solution.
goosedragons•6mo ago
You can do that with Nix or Guix.
scrappyjoe•6mo ago
Doesn’t renv do that? What need does renv not meet for you?
arbutus8•6mo ago
Ultimately, you're right that `rv` and `renv` get you to the same spot, both create reproducible, isolated projects. `renv` has a few issues that we often hit that lead to `rv`.

`renv` is an iterative process of installing some packages, then snapshotting your project state, and then trying to reproduce. The time between the installation and snapshot can often lose information (think `install.packages("my_pkg", repos = "https://my-repo.com")`, your repo source is lost by time the snapshot occurs). You can also install incompatible versions over-time.

rv solves both of these problems because it will lock the source at the time of installation. Additionally, because it is declarative, we are able to resolve the full dependency tree before installing packages to ensure everything will be compatible.

While I am a big proponent of using rv, if renv fits your needs, then switching to rv may not be worth it. For our organization, we did have multiple issues with renv, so created a replacement for it that we hope others in the community will find useful to address their needs.

aquafox•6mo ago
I had similar issues in the past. Setting up renv, everything seems good, but after working in a project for a few weeks and installing packages, renv constantly complains about the library being out-of-sync and resolving these complaints took way longer than new ones came around. I think renv has good intentions, but there are just too many edge cases (Bioconductor, installing an experimental package from Github, weird package dependencies etc.), that it always failed me in a real-world scenario.
Keats•6mo ago
By default, rv will create a library folder in the same folder as your rproject.toml and there's rv activate/deactivate to add it to your loaded libs. Pretty much the same stuff as a virtualenv in Python.
okanat•6mo ago
I used pixi for that. It uses Conda ecosystem but you get proper lockfiles and great native binary package support.
pupperino•6mo ago
{renv} is pretty solid, I've been using it in production for years now and have no complaints.
simpaticoder•6mo ago
You might want to consider writing a plugin for R with Mise en Place https://mise.jdx.dev/core-tools.html 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.)
Keats•6mo ago
I could be wrong but I feel like the overlap between mise and R users is likely very tiny
0cf8612b2e1e•6mo ago
Tend to agree. Majority of users are leaving that icky computer stuff to RStudio and have no idea what happens behind the scenes.
simpaticoder•6mo ago
Mise is pretty new, and it's userbase is tiny (afaik), so the overlap with it and anything is tiny. But I've enjoyed it as a replacement for ruby/node/java/python version managers, and I think it's a solid, thoughtful piece of kit. I think it targets curious, multilingual hackers who I imagine would be the kind of people to try out R to "kick the tires" just for fun (I imagine Elixer, Erlang, and Zig are in there for the same reason...surprised not to see Julia). It's also the case that mise is already doing all the heavy lifting of documentation, website, installation, etc so might as well not reinvent the wheel (such projects always have far more scope than you think, in my experience!) It could free you to making the package manager that much better (a very hard problem in itself).

I'm not affiliated, btw, just a happy user. Shout out to DHH for introducing it (to me) as part of Omakub.

_Wintermute•6mo ago
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.

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.

arbutus8•6mo ago
You're hitting one of my (and many people's) main issue with the R package distribution system. In CRAN, only one package version is available at a time, which makes things like version pinning quite difficult. Now the benefit of that is that CRAN guarantees all packages will work together at any moment in time, but then trying to reach back into the Archive breaks that guarantee.

What the CRAN time machine (and now Posit Package Manager) does is take that compatibility guarantee, and freeze it so you have access to all the same, compatible, packages at any moment in time.

While I personally do use PPM fairly extensively, I do understand the paywall concern for long-term reproducibility so `rv` can help you here, with a bit of manual massaging. I'd recommend setting the repositories section of the config file to be a snapshot date in PPM that contains the package version(s) you're interested in and then installing using that repository (taking the benefit of that CRAN guarantee), then in both the config file and `rv.lock`, replace all the references to the PPM repo with your preferred CRAN mirror. This will allow you to resolve to compatible package versions, but then for your POSIT concern, will still be able to reproduce using the CRAN archive.

t-kalinowski•6mo ago
Posit offers something similar to Microsoft’s CRAN Time Machine, but it works not only for CRAN, but also for Bioconductor and PyPI. You can add a date to the Public Posit Package Manager URL to access a snapshot of all packages from that day.

For example: https://packagemanager.posit.co/cran/2025-03-02

You can browse available snapshot dates here: https://packagemanager.posit.co/client/#/repos/cran/setup?sn...

This also works for PyPI and Python packages: https://packagemanager.posit.co/pypi/2025-03-04/simple

almostkindatech•6mo ago
Might be worth looking at groundhog, if you want a 'time machine' less likely to have a commercial motive
xvilka•6mo ago
Maybe some code could be shared with the `uv`[1] to avoid re-implementing same things.

[1] https://github.com/astral-sh/uv

Keats•6mo ago
We actually do use a bit of their code for the linking phase, which they seem to have taken from Cargo. For the rest, Python and R are way too different in how they handle packages to allow sharing code.
xgstation•6mo ago
is using Rust to rewrite existing package managers a new trendy thing

feels we eagerly need cv -> C/C++ package manager

barslmn•6mo ago
Can it be used for installing from bioconductor?
Keats•6mo ago
Not yet but it is on the radar.
cluckindan•6mo ago
Is it possible to override transitive dependencies?
Keats•6mo ago
Yes, if you list it in the rproject.toml from a specific repo/url/git etc it will use that
badmonster•6mo ago
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?
mauflows•6mo ago
I'm curious how your team ended up doing this. We settled on Nix with flakes after some pain with Docker / RStudio Server.
Keats•6mo ago
It's not planned for rv, this is whole other can of worms. Something like nix/docker should work but I'm not working on that part myself so I can't comment.
condwanaland•6mo ago
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
arbutus8•6mo ago
Yes! Absolutely in the plans to have a corresponding R package. In the meantime, we've created a `.rv` R environment within rv projects that allow users to call things like `.rv$sync()` and `.rv$add("pkg")` from the console. Our internal user bases is primarily not CS based and have found these functions extremely helpful
rorylawless•6mo ago
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.
j_bum•6mo ago
Looks interesting, I’m excited to give it a try.

Is there any plan to have it create a manifest (like renv.lock) that can be used directly with the posit publishing system?

arbutus8•6mo ago
Yes, that's a feature we are considering adding

Antimatter Development Program

https://caseyhandmer.wordpress.com/2025/11/26/antimatter-development-program/
1•surprisetalk•5m ago•0 comments

Just ten species make up almost half the weight of all wild mammals

https://ourworldindata.org/wild-mammal-biomass-dominance
1•surprisetalk•5m ago•0 comments

When Was TidalCycles Born?

https://slab.org/2025/11/25/when-was-tidalcycles-born/
1•surprisetalk•5m ago•0 comments

It's Been a Hard Year

https://bell.bz/its-been-a-very-hard-year/
1•surprisetalk•5m ago•0 comments

What's Happening with Hypermode?

1•sthala•7m ago•0 comments

Google Antigravity Deletes D Drive

https://mastodon.gamedev.place/@bastardsheep@aus.social/115641546248437052
2•jay_kyburz•13m ago•1 comments

Upgrade a ThinkPad 701c in 2023. (2023)

https://old.reddit.com/r/thinkpad/comments/185y4m6/upgrade_a_thinkpad_701c_in_2023/
1•mitthrowaway2•17m ago•0 comments

The Hierarchy of Work Complexity Is Inescapable (Even at Buurtzorg)

https://synexia.substack.com/p/the-hierarchy-of-work-is-inescapable
1•asplake•20m ago•0 comments

Linux 6.18 Released

https://lore.kernel.org/lkml/CAHk-=whnC+hRftevTLeVs3tyyqwn+7un=jUES2-WX+pZhDdKNw@mail.gmail.com/T/#u
5•jrepinc•29m ago•1 comments

Arch Linux-based EndeavourOS releases Ganymede

https://endeavouros.com/news/the-long-wait-is-over-ganymede-has-arrived/
2•jrepinc•31m ago•0 comments

Show HN: BirdWrite – The AI Engine for World-Class Content

https://birdwrite.vercel.app/
1•devanimecx•33m ago•0 comments

TSMC Overseas Fabs – A Success?

https://newsletter.semianalysis.com/p/tsmc-overseas-fabs-a-success
1•emschwartz•34m ago•0 comments

Show HN: Tera.fm – Listen to Hacker News instead of reading it

https://tera.fm/
2•digi_wares•37m ago•1 comments

SmartTube Compromised

https://www.aftvnews.com/smarttubes-official-apk-was-compromised-with-malware-what-you-should-do-...
2•akersten•41m ago•0 comments

A speculative framework for thinking about civilization resolution in the AI era

https://ontomesh.org/civilization-resolution-png-era.html
2•nettalk83•42m ago•1 comments

Waymo Has a Charging Problem

https://insideevs.com/news/780391/waymo-charging-depot-santa-monica/
1•voxadam•44m ago•1 comments

'A full-blown crisis': Americans brace for a surge in healthcare costs

https://www.ft.com/content/beec76df-8e6d-4238-bae2-e51683b62aa4
68•mmarian•49m ago•63 comments

DeLorean Time Travel Engine: Software Anatomy of the 1885 Bug

https://medium.com/@muhammetus/delorean-time-travel-engine-software-anatomy-of-the-1885-bug-0a2f5...
1•thunderbong•50m ago•0 comments

Show HN: Notionfile – Notion templates designed to reduce founder friction

https://notionfile.com
1•tuhel•52m ago•0 comments

Time's up for Rolex? British watchmakers challenge Swiss dominance

https://www.thetimes.com/world/middle-east/article/britain-watch-manufacturing-dubai-bjx06jdmc
2•petethomas•52m ago•1 comments

Stacked Diffs with git rebase —onto

https://dineshpandiyan.com/blog/stacked-diffs-with-rebase-onto/
1•flexdinesh•54m ago•0 comments

Wispr Flow raised $81M for this. I open-sourced it: jarvis.ceo (free forever)

https://github.com/akshayaggarwal99/jarvis-ai-assistant
2•imaka•54m ago•2 comments

Carbon costs of different pathways for reducing fire hazard in the Sierra Nevada

https://esajournals.onlinelibrary.wiley.com/doi/10.1002/eap.70111
1•PaulHoule•54m ago•0 comments

Fancy lion's mane in your latte? The rise of mushroom coffee

https://www.thetimes.com/life-style/food-drink/article/mushrooms-collagen-functional-coffee-g8t03...
2•petethomas•55m ago•0 comments

The lab where Carlsberg is brewing beers of the future

https://www.thetimes.com/life-style/food-drink/article/inside-lab-carlsberg-beers-future-7kzgsfvzz
1•petethomas•58m ago•0 comments

Dookie.nvim: A color scheme inspired by Plan9's acme editor

https://github.com/pebeto/dookie.nvim
1•joseesparza•59m ago•0 comments

Google Antigravity just deleted the contents of whole drive

https://old.reddit.com/r/google_antigravity/comments/1p82or6/google_antigravity_just_deleted_the_...
12•tamnd•1h ago•3 comments

AI helps drive record $11.8B in Black Friday online spending

https://www.reuters.com/business/retail-consumer/us-consumers-spent-118-billion-black-friday-says...
1•TMWNN•1h ago•1 comments

Show HN: Two physics-based programming languages (WPE/TME and Crystalline)

https://github.com/Heimdall-Organization/DHawk-Labs
1•yodamonk1•1h ago•0 comments

Top Gun Traders: Stock Bets and Crypto Culture Take over the Military

https://www.wsj.com/finance/stock-trading-military-crypto-culture-75fb3c59
3•JumpCrisscross•1h ago•2 comments