Skip to content
Permalink

Comparing changes

Choose two branches to see what’s changed or to start a new pull request. If you need to, you can also or learn more about diff comparisons.

Open a pull request

Create a new pull request by comparing changes across two branches. If you need to, you can also . Learn more about diff comparisons here.
base repository: astral-sh/uv
Failed to load repositories. Confirm that selected base ref is valid, then try again.
Loading
base: 0.11.10
Choose a base ref
...
head repository: astral-sh/uv
Failed to load repositories. Confirm that selected head ref is valid, then try again.
Loading
compare: 0.11.11
Choose a head ref
  • 3 commits
  • 148 files changed
  • 6 contributors

Commits on May 6, 2026

  1. fix(cache): accept legacy ID format from pre-0.11.9 cache entries (#1…

    …9298) (#19301)
    
    ## Summary
    
    Closes #19298.
    
    #19201 (0.11.9) switched revision IDs from 21-character `nanoid` to
    `uv_fastid`'s 16-character IDs, but didn't bump the cache bucket
    version. As a result, when 0.11.9+ opens a cache populated by an older
    uv, deserialization of an existing revision pointer hard-fails with:
    
    ```
    Failed to deserialize cache entry
    invalid ID: "HM0NxJml5hc7UjbfTWT1r" (must be 16 ID characters in the alphabet)
    ```
    
    This effectively poisons long-lived caches on shared CI workers after
    upgrade.
    
    ## Fix
    
    Mirror the existing convention already documented on `ArchiveId` in
    `crates/uv-cache/src/archive.rs`:
    
    ```rust
    /// Note: for compatibility with the existing `archive-v0` bucket, this is a newtype
    /// around a `String` instead of a newtype around `uv_fastid::Id`. In the future,
    /// we may want to bump to `archive-v1` and switch to using `uv_fastid::Id` directly.
    ```
    
    `RevisionId` had the same shape but was migrated to `uv_fastid::Id`
    directly in #19201, which is what made the legacy 21-character pointers
    undecodable. Switching `RevisionId` back to `String` (with the same
    `uv_fastid::insecure()` source for new IDs) restores
    forward-compatibility with both formats. The ID is only used as an
    opaque path/string component, so no other call site needs to change.
    
    ## Test plan
    
    - [x] New unit test in `crates/uv-distribution/src/source/revision.rs`:
    - `deserialize_legacy_nanoid_revision` round-trips a `Revision` with a
    21-character legacy ID through `rmp_serde` (the exact failing path from
    the bug report)
    - `round_trip_current_revision` confirms freshly-generated IDs still
    serialize as the new 16-character form
    - [x] `cargo build -p uv` clean
    - [x] `cargo test -p uv-distribution --lib` -> 21/21 passing (incl. the
    2 new tests)
    - [x] `cargo test -p uv-fastid` -> 4/4 passing
    - [x] `cargo fmt --check` clean
    - [x] `cargo clippy -p uv-distribution --lib --tests` clean
    
    ---------
    
    Signed-off-by: William Woodruff <william@yossarian.net>
    Co-authored-by: William Woodruff <william@yossarian.net>
    ChrisJr404 and woodruffw authored May 6, 2026
    Configuration menu
    Copy the full SHA
    b80d791 View commit details
    Browse the repository at this point in the history
  2. Continue docs/versions/mirror publish on crates.io failure (#19302)

    Co-authored-by: Claude <noreply@anthropic.com>
    zanieb and claude authored May 6, 2026
    Configuration menu
    Copy the full SHA
    ec4590d View commit details
    Browse the repository at this point in the history
  3. Bump version to 0.11.11 (#19303)

    Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
    Co-authored-by: Zanie Blue <contact@zanie.dev>
    3 people authored May 6, 2026
    Configuration menu
    Copy the full SHA
    ed7b060 View commit details
    Browse the repository at this point in the history
Loading