uv deduplica todos los archivos de su caché de wheels y ahorra un 10% de espacio

uv: Deduplicate all files in the wheel cache

El PR #21327 de uv introduce deduplicación a nivel de archivo en la caché de wheels: cada archivo se almacena bajo su hash BLAKE3 en un bucket `files-v0`, y se enlazan físicamente (hardlinks) en sus ubicaciones originales en `archive-v0`. Esto elimina duplicados tanto dentro como entre wheels, logrando un ahorro de 545.2 MiB (aproximadamente el 10% de la caché) en la máquina del autor. El impacto en el rendimiento es mínimo: un aumento de menos del 4% en instalaciones en frío y sin efecto en instalaciones en caliente. La implementación mantiene la compatibilidad con el diseño de caché existente y pasa todas las pruebas de integración.

Estamos ahorrando 545.2 MiB en mi máquina local, o alrededor del 10% de la caché.
  1. notatallshaw

    Como mantenedor de pip, llevo mucho tiempo analizando las ventajas y desventajas de la caché de uv; es el factor más importante que hace que las instalaciones en caliente sean más rápidas con uv que con pip. Como pip almacena en caché las distribuciones originales y luego tiene que descomprimirlas cada vez, uv almacena en caché la distribución descomprimida y crea enlaces duros a ella si puede.

    Pero siempre ha tenido dos problemas principales:

    1. No hay forma de reproducir distribuciones exactas para un comando de 'descarga' (no existe un equivalente de 'pip download' en uv)

    2. Para personas con muchos entornos diferentes, la caché crece significativamente más que la de pip

    Me interesa ver, al menos de forma anecdótica, si esto mejora significativamente el punto 2; entonces quizás podamos tener una estrategia de caché de dos capas sin el coste significativo de espacio en disco.

  2. mark_l_watson

    Buena mejora. Para mí, uv es el 'Quicklisp para Python'. uv me ha permitido disfrutar usando Python como Quicklisp hace que Common Lisp sea más agradable de usar.

    Siempre he sido un devoto de Lisp, pero hace unos años, cuando empecé a usar uv, comencé a ver Python como un lenguaje que realmente podía disfrutar, así que puse esfuerzo en hacer que mi configuración de desarrollo en Python fuera casi sin fricciones.

  3. stephenlf

    uv es la columna vertebral de cualquier biblioteca moderna de Python. Me entusiasma ver mejoras.

    https://stephenlf.dev/blog/python-library-in-2026/

  4. CivBase

    Una reducción del 10% en el tamaño de la caché a cambio de una ralentización del 4% no me parece obviamente valiosa, especialmente cuando viene acompañada de un aumento en la complejidad.

  5. TacticalCoder

    > deduplicación a nivel de archivo: cada archivo se almacena ahora bajo su hash BLAKE3

    Blake3 es realmente un hash criptográfico maravillosamente rápido. Lo uso para mi propia utilidad de 'deduplicación / integridad / berserker' (que hice antes de que existieran los LLMs).

    Si tengo un archivo llamado:

    DSC98731-b3-7b39197a22.JPG

    entonces:

    - si ese archivo no coincide con el checksum 7b39197a22, hay un problema de integridad del archivo (increíble y ya me ha ayudado a solucionar problemas)

    - si cualquier otro archivo tiene el mismo hash Blake3 7b39197a22, es un duplicado

    - si ese checksum 7b39197a22 está en mi base de datos, 'pueden ocurrir cosas'.

    Por ejemplo, mi base de datos puede decir 'cualquier archivo con un hash Blake3 de 7b39197a22 siempre se puede eliminar' o 'cualquier archivo con un hash Blake3 de 887463c09e, si tiene un nombre genérico como "dscXXXXX", siempre se puede renombrar a "20260722jackJohnAtTheBeach-b3-778463c09e.jpg" (o lo que te convenga).

    Es realmente genial (y sé que varios aquí hicieron esquemas similares de forma independiente) y Blake3 es un hash asombroso para este tipo de usos.

Más de este día

2026-08-31