[{"data":1,"prerenderedAt":302},["ShallowReactive",2],{"project-44006735":3},{"id":4,"name":5,"line":6,"line_source":7,"title":8,"url":9,"domain":10,"maker":11,"posted_at":12,"year":13,"points":14,"comments":15,"rank_in_year":16,"shown_in_year":17,"top":18,"tier":19,"category":20,"subcategory":21,"format":22,"keywords":23,"reception":28,"sentiment":29,"stance_mix":30,"scored_comments":35,"aspects":36,"strip":42,"post_text":43,"what":44,"said":79,"maker_in_thread":178,"shape":191,"grid":195,"attempts":266,"same_week":267,"maker_shows":215,"maker_hidden":294,"reader_version":295,"card":296},"44006735","Rv","A Package Manager for R","title","Show HN: Rv, a Package Manager for R","https:\u002F\u002Fgithub.com\u002FA2-ai\u002Frv","github.com","Keats",1747409850,2025,76,31,944,3837,25,"notable","dev_tools","package manager","cli",[24,25,26,27],"r package manager","renv alternative","r lockfile","r dependency management","curious",0.167,{"positive":31,"neutral":32,"mixed":33,"critical":34},5,10,0,1,16,{"idea":37,"execution":39,"design":40,"performance":41},{"positive":38,"critical":33},3,{"positive":34,"critical":34},{"positive":34,"critical":33},{"positive":33,"critical":33},[38,33,33,38,38,33,31,31,38,33,33,38,33,33,33,31,38,31,33,38,33,38,31,34,33,33,33,38,33,38,33],"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.\n\nIf you have used Cargo\u002Fnpm\u002Fany Python pa",{"problem":45,"audience":55,"pricing":63,"motivation":64,"time_to_build":63,"stack":69,"openness":77,"stage":77,"team_size":78},{"value":46,"source":47,"evidence":48},"Reproducible R package and R version management; renv snapshots lose install source info","maker",[49,51],{"id":50},"post",{"id":52,"by":53,"text":54},"44008424","arbutus8","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`.…",{"value":56,"source":57,"evidence":58},"R users and teams needing reproducible projects","inferred",[59,60],{"id":52,"by":53,"text":54},{"id":61,"by":53,"text":62},"44010457","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…",null,{"value":65,"source":66,"evidence":67},"Replace renv issues seen at the maker's organization","commenter",[68],{"id":52,"by":53,"text":54},[70],{"value":71,"source":57,"evidence":72},"Rust",[73],{"id":74,"by":75,"text":76},"44008174","xgstation","is using Rust to rewrite existing package managers a new trendy thing feels we eagerly need cv -> C\u002FC++ package manager","unknown","team",{"praise":80,"objections":92,"requests":97,"questions":119,"alternatives":134},[81,88],{"value":82,"source":66,"evidence":83},"Easy to use; more reliable than renv in small projects",[84],{"id":85,"by":86,"text":87},"44011844","rorylawless","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…",{"value":89,"source":66,"evidence":90},"Useful .rv R console functions for non-CS users",[91],{"id":61,"by":53,"text":62},[93],{"value":94,"source":66,"evidence":95},"Rust rewrites of package managers questioned",[96],{"id":74,"by":75,"text":76},[98,105,112],{"value":99,"source":66,"evidence":100},"R package wrapper exposing high-level commands",[101],{"id":102,"by":103,"text":104},"44010271","condwanaland","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…",{"value":106,"source":66,"evidence":107},"Bioconductor installation support",[108],{"id":109,"by":110,"text":111},"44008808","barslmn","Can it be used for installing from bioconductor?",{"value":113,"source":66,"evidence":114},"Posit publishing manifest output",[115],{"id":116,"by":117,"text":118},"44014766","j_bum","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?",[120,127],{"value":121,"source":66,"evidence":122},"Handling system-level dependencies",[123],{"id":124,"by":125,"text":126},"44009650","badmonster","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…",{"value":128,"source":66,"evidence":129},"Creating isolated R environments",[130],{"id":131,"by":132,"text":133},"44007409","mbeavitt","Can this be used to effectively create R environments? I’m desperate for such a solution.",[135,146,157,164,171],{"value":136,"source":66,"evidence":137},"renv",[138,142],{"id":139,"by":140,"text":141},"44007510","scrappyjoe","Doesn’t renv do that? What need does renv not meet for you?",{"id":143,"by":144,"text":145},"44009148","aquafox","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…",{"value":147,"source":66,"evidence":148},"Nix or Guix",[149,153],{"id":150,"by":151,"text":152},"44007427","goosedragons","You can do that with Nix or Guix.",{"id":154,"by":155,"text":156},"44009763","mauflows","I'm curious how your team ended up doing this. We settled on Nix with flakes after some pain with Docker \u002F RStudio Server.",{"value":158,"source":66,"evidence":159},"pixi",[160],{"id":161,"by":162,"text":163},"44008773","okanat","I used pixi for that. It uses Conda ecosystem but you get proper lockfiles and great native binary package support.",{"value":165,"source":66,"evidence":166},"Posit Package Manager",[167],{"id":168,"by":169,"text":170},"44008502","t-kalinowski","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…",{"value":172,"source":66,"evidence":173},"groundhog",[174],{"id":175,"by":176,"text":177},"44008542","almostkindatech","Might be worth looking at groundhog, if you want a 'time machine' less likely to have a commercial motive",{"comments":179,"answered":180,"key":181},6,4,[182,185,188],{"id":183,"text":184},"44008748","I could be wrong but I feel like the overlap between mise and R users is likely very tiny",{"id":186,"text":187},"44008759","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…",{"id":189,"text":190},"44009824","It's not planned for rv, this is whole other can of worms. Something like nix\u002Fdocker should work but I'm not working on that part myself so I can't comment.",{"commenters":192,"max_depth":180,"maker_replies":179,"first_comment_mins":193,"lifespan_hours":194},22,61,24,[196,200,202,206,208,212,214,217,219,220,221,223,226,229,231,232,234,235,238,241,243,244,245,246,248,251,252,255,260,262,264],[197,33,38,198,199,33],"44007555","project\u002Fneutral\u002Fidea","simpaticoder",[183,33,33,201,11,34],"project\u002Fcritical\u002Fidea",[203,33,33,204,205,33],"44008900","commenter\u002Fneutral\u002Fnone","0cf8612b2e1e",[207,33,38,198,199,33],"44010176",[209,34,38,210,211,33],"44008058","project\u002Fneutral\u002Fexecution","xvilka",[186,34,33,213,11,34],"maker\u002Fneutral\u002Fexecution",[102,215,31,216,103,33],2,"project\u002Fpositive\u002Fidea",[61,215,31,218,53,33],"project\u002Fpositive\u002Fdesign",[124,38,38,198,125,33],[154,38,33,204,155,33],[189,38,33,222,11,34],"maker\u002Fneutral\u002Fnone",[224,180,38,198,225,33],"44007732","_Wintermute",[227,180,33,228,53,33],"44008221","commenter\u002Fneutral\u002Fidea",[168,180,33,230,169,33],"other\u002Fneutral\u002Fnone",[175,180,33,230,176,33],[85,31,31,233,86,33],"project\u002Fpositive\u002Fexecution",[116,179,38,198,117,33],[236,179,31,237,53,33],"44015188","maker\u002Fpositive\u002Fidea",[74,239,33,240,75,33],7,"other\u002Fcritical\u002Fidea",[131,242,38,198,132,33],8,[150,242,33,230,151,33],[139,242,38,198,140,33],[52,242,31,237,53,33],[143,242,34,247,144,33],"project\u002Fcritical\u002Fexecution",[249,242,33,250,11,34],"44007561","maker\u002Fneutral\u002Fdesign",[161,242,33,230,162,33],[253,242,33,230,254,33],"44009817","pupperino",[256,257,38,258,259,33],"44009290",9,"project\u002Fneutral\u002Fdesign","cluckindan",[261,257,33,250,11,34],"44009456",[109,32,38,263,110,33],"project\u002Fneutral\u002Fperformance",[265,32,33,222,11,34],"44009050",[],[268,273,277,281,286,290],{"id":269,"name":270,"points":271,"category":272},"44022353","Voynich NLP analysis",381,"learning_science",{"id":274,"name":275,"points":276,"category":20},"44042371","90s.dev",352,{"id":278,"name":279,"points":280,"category":20},"44042490","Jwno",297,{"id":282,"name":283,"points":284,"category":285},"44009321","KVSplit",272,"ai",{"id":287,"name":288,"points":289,"category":20},"44006231","Erlang-RED",243,{"id":291,"name":292,"points":293,"category":20},"44023144","Vaev",233,false,"v2",{"id":297,"name":5,"line":6,"ai":294,"cat":20,"year":13,"points":14,"comments":15,"rec":28,"s":298,"top":18,"kw":299,"maker":11,"domain":10,"tier":19,"attempts":33,"strip":300,"url":9,"mix":301,"praise":82,"objection":94,"sub":21},44006735,0.17,[24,25,26,27],"3003305530030005350303510003030",[31,32,33,34],1794036674932]