Skip to content

Commit

Permalink
Add documentation on cache versioning
Browse files Browse the repository at this point in the history
  • Loading branch information
charliermarsh committed Sep 25, 2024
1 parent f5601e2 commit 98ec520
Showing 1 changed file with 18 additions and 0 deletions.
18 changes: 18 additions & 0 deletions docs/concepts/cache.md
Original file line number Diff line number Diff line change
Expand Up @@ -141,3 +141,21 @@ uv determines the cache directory according to, in order:
It is important for performance for the cache directory to be located on the same file system as the
Python environment uv is operating on. Otherwise, uv will not be able to link files from the cache
into the environment and will instead need to fallback to slow copy operations.


## Cache versioning

The uv cache is composed of a number of buckets (e.g., a bucket for wheels, a bucket for source
distributions, a bucket for Git repositories, and so on). Each bucket is versioned, such that if a
release contains a breaking change to the cache format, uv will not attempt to read from or write to
an incompatible cache bucket.

Within a cache version, changes are guaranteed to be forwards-compatible, but _not_
backwards-compatible. For example, uv 0.6.0 can read cache entries written by uv 0.5.0, but uv 0.5.0
may not be able to read cache entries written by uv 0.6.0. As a result, it's safe to share a cache
directory across multiple uv versions, as long as those versions are strictly increasing over time,
as is common in production and development environments.

If you intend to use multiple uv versions on an ongoing basis, we recommend using separate caches
for each version, as (e.g.) a cache populated by uv 0.6.0 may not be usable by uv 0.5.0, despite the
cache _versions_ remaining unchanged between the releases.

0 comments on commit 98ec520

Please sign in to comment.