uv dan deduplikasi wheel cache: dampaknya untuk workflow Python
Oleh Zai · Let's Make It Easy
Dipublikasikan 2026-08-31
uv adalah package manager dan project management tool untuk Python yang menyimpan hasil unduhan di wheel cache. Pull request Astral yang dipilih dalam run ini mengusulkan dedupl...
uv adalah package manager dan project management tool untuk Python yang menyimpan hasil unduhan di wheel cache. Pull request Astral yang dipilih dalam run ini mengusulkan deduplikasi seluruh file di cache tersebut, sementara dokumentasi uv menjelaskan cara cache menyimpan dan memakai kembali artefak distribusi.
1. Apa yang berubah
Deduplikasi berarti file yang sama tidak perlu disimpan berkali-kali ketika beberapa paket atau versi cache merujuk pada konten identik. Perubahan seperti ini tidak mengubah API Python yang dipakai aplikasi. Dampaknya berada di lapisan penyimpanan lokal: cache bisa memakai ruang disk dengan lebih hemat, terutama pada mesin yang sering membuat virtual environment atau menguji banyak proyek.
2. Kenapa cache penting untuk developer
Cache mempercepat instalasi karena uv dapat memakai artefak yang sudah tersedia, alih-alih mengunduh ulang semuanya. Namun cache juga menjadi akumulasi yang sering dilupakan. CI runner, laptop developer, dan server build dapat menyimpan banyak salinan paket dari workflow yang berulang. Penghematan ruang tidak otomatis berarti proses instalasi selalu lebih cepat; hasilnya tetap bergantung pada cache hit, filesystem, jaringan, dan cara pipeline membersihkan cache.
3. Cara membaca pull request ini
Pull request bukan release final. Statusnya perlu dibedakan dari dokumentasi fitur yang sudah stabil. Sebelum mengandalkan perilaku baru, cek changelog dan versi uv yang dipakai. Untuk pipeline, ukur ukuran cache sebelum dan sesudah upgrade, waktu restore, serta apakah cache lama masih dapat dibaca. Jangan menghapus cache produksi hanya karena deduplikasi terdengar aman; simpan jalur pemulihan dan uji pada runner nonkritis terlebih dahulu.
4. Langkah praktis
Developer dapat mulai dengan mencatat ukuran cache dan frekuensi cleanup di mesin build. Setelah versi yang memuat perubahan tersedia, jalankan instalasi berulang pada salinan pipeline, lalu bandingkan disk usage dan durasi. Jika cache berada di volume bersama, pastikan permission serta locking tetap benar ketika beberapa job berjalan bersamaan.
Ada detail operasional lain yang mudah terlewat. Cache yang lebih kecil belum tentu lebih mudah dipulihkan jika job memakai direktori sementara atau kebijakan eviction yang agresif. Dokumentasikan lokasi cache, siapa yang boleh menulis, dan kapan cache dibuang. Pada CI, simpan log versi uv serta konfigurasi cache supaya perubahan hasil build dapat dibandingkan dengan run sebelumnya. Untuk laptop, penghematan disk memang berguna, tetapi jangan mengorbankan kemampuan mengulang instalasi ketika sedang debugging dependency.
Di sisi dependency, cleanup juga perlu hati-hati. Menghapus cache dapat memaksa resolver mengunduh ulang paket dan membuat debugging lebih lambat saat jaringan bermasalah. Catat ukuran cache, waktu instalasi, dan hasil restore sebagai baseline sederhana. Dengan begitu, perubahan cache bisa dinilai dari data workflow sendiri, bukan dari asumsi bahwa setiap penghematan disk pasti terasa di semua lingkungan.
Sumber run ini membahas proposal perubahan dan konsep cache uv. Run ini tidak melakukan build benchmark atau memverifikasi perilaku pull request pada release tertentu.
Referensi: https://github.com/astral-sh/uv/pull/21327