spinel-coop/rv

[epic] Make caching real good

Open

#414 opened on Jan 25, 2026

View on GitHub
 (2 comments) (2 reactions) (0 assignees)Rust (46 forks)user submission
good first issue

Repository metrics

Stars
 (1,706 stars)
PR merge metrics
 (Avg merge 4d 18h) (14 merged PRs in 30d)

Description

We have several significant opportunities to improve the ways rv caches things to make the things we do often really fast:

  • set up the cacache crate for the other parts of rv to use
  • unpack ruby and gem tarballs into our cacache, so we only store each file once even if it is in multiple versions of a gem
  • install gems by copy-on-write hardlinking the files in that gem from cacache into the install directory, instead of unpacking tarballs
  • after compiling native extensions, copy the results into cacache. on future installs simply hardlink those files as well, so any particular machine will never compile a gem more than once
  • put git gem clones into the global cache, so you never have to do a full checkout of a git repo (eg rails) a second time

Contributor guide