uv 캐시에서 중복 파일을 모두 제거하는 PR 공개

uv: Deduplicate all files in the wheel cache

uv의 PR #21327은 wheel 캐시 내 파일 수준 중복 제거를 도입합니다. 기존에는 wheel 단위로만 콘텐츠 주소 지정 캐싱을 지원했지만, 이제 모든 파일을 BLAKE3 해시로 `files-v0` 버킷에 저장하고, 하드링크를 통해 기존 위치에 연결합니다. 이로써 캐시 크기가 약 10% (545.2 MiB) 줄어들며, 콜드 설치 속도는 4% 미만으로 느려질 뿐 웜 설치에는 영향이 없습니다. 벤치마크 결과 모든 8개 측정 항목의 중앙값 회귀가 5% 미만입니다.

So we're saving 545.2 MiB on my local machine, or about 10% of the cache. In return, the net effect seems to be something like a <4% slowdown for cold installs (and no effect on warm installs), which I think is probably worthwhile here.
  1. notatallshaw

    pip 유지보수자로서 저는 오랫동안 uv 캐시의 장단점을 살펴봤습니다. 그것은 uv가 pip보다 따뜻한 설치를 더 빠르게 만드는 가장 큰 요소입니다. pip는 원본 배포판을 캐시하고 매번 압축을 풀어야 하는 반면, uv는 압축이 풀린 배포판을 캐시하고 가능하면 하드 링크로 연결합니다.

    하지만 항상 두 가지 주요 문제가 있었습니다:

    1. "다운로드" 명령에 대해 정확한 배포판을 재현할 방법이 없습니다 (pip download에 해당하는 uv 명령이 없습니다).

    2. 다양한 환경을 많이 가진 사람들의 경우 캐시가 pip보다 훨씬 더 커집니다.

    적어도 일화적으로, 이것이 2번을 크게 개선하는지 보고 싶습니다. 그렇다면 상당한 디스크 공간 비용 없이 2계층 캐싱 전략을 가질 수 있을 것입니다.

  2. stephenlf

    uv는 현대 Python 라이브러리의 중추입니다. 개선 사항을 보게 되어 기쁩니다.

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

  3. mark_l_watson

    좋은 개선입니다. 저에게 uv는 'Python용 Quicklisp'입니다. uv 덕분에 Python을 즐겁게 사용할 수 있게 되었고, Quicklisp이 Common Lisp를 더 편리하게 만드는 것과 같습니다.

    저는 항상 Lisp 신봉자였지만, 몇 년 전 uv를 사용하기 시작하면서 Python을 정말 즐겁게 사용할 수 있는 언어로 보기 시작했고, Python 개발 환경을 거의 마찰 없이 만들기 위해 노력했습니다.

  4. TacticalCoder

    > 파일 수준 중복 제거: 모든 파일은 이제 BLAKE3 해시 아래에 저장됩니다.

    Blake3는 정말 놀랍도록 빠른 암호화 해시입니다. 저는 제 자신의 "중복 제거 / 무결성 / 버서커" 유틸리티(LLM이 등장하기 전에 만든)에 사용합니다.

    만약 제가 다음과 같은 파일을 가지고 있다면:

    DSC98731-b3-7b39197a22.JPG

    그러면:

    - 해당 파일이 7b39197a22로 체크섬되지 않으면 파일 무결성 문제가 있습니다 (놀랍게도 이미 문제 해결에 도움이 되었습니다).

    - 다른 파일이 동일한 Blake3 7b39197a22 해시를 가지고 있다면 중복입니다.

    - 해당 7b39197a22 체크섬이 제 데이터베이스에 있다면 "일이 일어날 수 있습니다".

    예를 들어 제 DB는 "Blake3 해시가 7b39197a22인 파일은 항상 삭제해도 된다" 또는 "Blake3 해시가 887463c09e인 파일이 일반적인 파일명(예: "dscXXXXX")을 가지고 있다면 항상 "20260722jackJohnAtTheBeach-b3-778463c09e.jpg"(또는 원하는 대로)로 이름을 바꿀 수 있다"고 말할 수 있습니다.

    정말 훌륭합니다 (그리고 여기 여러 사람이 독립적으로 비슷한 방식을 만들었다는 것을 알고 있습니다). Blake3는 이런 종류의 사용에 놀라운 해시입니다.

  5. CivBase

    10%의 캐시 크기 감소를 위해 4%의 속도 저하를 감수하는 것은 저에게 분명히 가치 있어 보이지 않습니다. 특히 복잡성이 증가하는데 말이죠.

  6. dboreham

    사람들은 uv가 빠르기 때문에 좋다고 말하지만, 솔직히 저는 그 점에 신경 쓰지 않습니다. 우리는 Python 기반 도구 배포를 위해 uv를 사용하기 시작했는데, 그 이유는 git 저장소에서 직접 설치하고 이후에 같은 저장소에서 업데이트하는 것이 매우 편리하기 때문입니다. 패키지를 빌드할 필요가 없습니다.

  7. as1297kj

    ClosedAI에 속한 패키징 소프트웨어를 사용하는 것이 무슨 의미가 있나요?

    Astral 사람들은 이미 댓글에서 AI 코딩을 찬성하는 발언을 하고 있습니다. uv를 사용함으로써, 당신은 문자 그대로 주식 옵션을 위해 당신을 실업자로 만들고 싶어하는 사람들을 지원하는 것입니다.

이 날의 다른 글

2026-08-31