7 poin oleh GN⁺ 2024-02-16 | 3 komentar | Bagikan ke WhatsApp
  • uv adalah installer dan resolver paket Python supercepat yang ditulis dengan Rust, dirancang untuk menggantikan alur kerja pip dan pip-tools
  • uv merupakan tonggak menuju "Cargo for Python", yaitu pengelola proyek dan paket Python yang komprehensif, cepat, andal, dan mudah digunakan
  • Ada rencana untuk mengambil alih pengelolaan Rye, alat packaging Python yang dikembangkan secara eksperimental oleh Armin Ronacher, lalu memperluas uv sebagai proyek penerus yang terintegrasi

Fokus yang obsesif pada performa

  • uv 8-10 kali lebih cepat daripada pip dan pip-tools tanpa caching, dan 80-115 kali lebih cepat saat cache tersedia.
  • Menggunakan cache modul global agar dependensi tidak perlu diunduh atau dibangun ulang, serta memanfaatkan Copy-on-Write dan hardlink pada sistem file yang didukung untuk meminimalkan penggunaan ruang disk.

Optimasi adopsi

  • Rilis awal uv mendukung API pip dan pip-tools, sehingga dapat digunakan di proyek yang sudah ada tanpa perubahan konfigurasi.
  • uv disediakan sebagai satu binary statis tunggal, dan dapat menggantikan pip, pip-tools, serta virtualenv.
  • Dapat diinstal terpisah dari Python itu sendiri tanpa perlu mengelola instalasi pip berdasarkan versi Python.

"Cargo for Python": uv dan Rye

  • uv adalah tonggak perantara menuju pengelola paket dan proyek Python terpadu yang cepat, andal, dan mudah digunakan.
  • uv menargetkan satu binary tunggal yang mencakup bukan hanya pip, pip-tools, dan virtualenv, tetapi juga pipx, tox, poetry, pyenv, ruff, dan lainnya.

API yang kompatibel

  • Dengan menggunakan uv pip install alih-alih pip install, dependensi Python dapat diinstal dari command line, file requirements, atau pyproject.toml.
  • Dengan menggunakan uv pip compile alih-alih pip-compile, dapat dibuat requirements.txt yang terkunci.
  • Dengan menggunakan uv pip sync alih-alih pip-sync, requirements.txt yang terkunci dan virtual environment dapat disinkronkan.

Roadmap

  • Setelah rilis ini, prioritasnya adalah dukungan pengguna sambil berfokus pada peningkatan kompatibilitas, performa, dan stabilitas.
  • Setelah itu, targetnya adalah memperluas uv menjadi pengelola proyek dan paket Python yang lengkap.

Ucapan terima kasih

  • Menyampaikan terima kasih kepada semua pihak yang telah berkontribusi secara langsung maupun tidak langsung dalam pengembangan uv.
  • Secara khusus, berterima kasih kepada Jacob Finkelman dan Matthieu Pizenberg, yang digunakan di uv sebagai resolver versi dasar untuk PubGrub.

Opini GN⁺

  • uv adalah alat inovatif yang menawarkan performa jauh lebih cepat dibandingkan alat pip yang ada bagi pengembang Python, sehingga dapat secara signifikan mempersingkat waktu penyiapan proyek.
  • Karena ditulis dengan Rust, uv mencerminkan tren baru dalam ekosistem Python yang menekankan performa dan stabilitas, dan hal ini diharapkan akan sangat meningkatkan pengalaman pengembang.
  • Pengembangan uv mengarah pada integrasi alat packaging dan manajemen proyek Python, yang akan memungkinkan pengembang bekerja dengan cara yang lebih efisien dan konsisten.

3 komentar

 
kyunghoon 2024-10-29

Kecepatannya benar-benar luar biasa;;

 
ajh508 2024-02-17

Semoga bisa diperluas dan menggantikan conda.

 
GN⁺ 2024-02-16
Opini Hacker News
  • Keraguan terhadap pip-dan-lainnya yang didukung VC

    • Sulit memahami bagaimana pip-dan-lainnya yang didukung modal ventura akan menghasilkan uang ketika mesin pencetak uang gratis itu rusak.
  • Pertanyaan tentang tidak didukungnya pembuatan lockfile yang independen dari platform oleh uv

    • Tentang uv yang, tidak seperti Poetry atau PDM, tidak membuat lockfile yang independen dari platform, ada pendapat bahwa pendekatan ini bergantung pada file requirements dan tidak selaras dengan tujuan menjadi "Cargo untuk Python".
  • Penilaian positif terhadap dukungan uv untuk strategi resolusi dependensi alternatif

    • uv pada dasarnya mengikuti strategi resolusi dependensi Python standar yang memprioritaskan versi paket kompatibel terbaru, tetapi juga menyediakan kemampuan untuk menguji dengan versi kompatibel terendah melalui opsi --resolution=lowest.
    • Sangat bagus bahwa uv menyediakan kemampuan untuk menghasilkan solusi bagi versi Python yang berbeda dari versi Python yang saat ini terpasang melalui parameter --python-version.
  • Pertanyaan tentang kompleksitas sistem paket Python

    • Muncul pertanyaan bagaimana pembahasan packaging bisa menjadi serumit ini, padahal filosofi interpreter Python mencakup prinsip "harus ada satu cara yang jelas untuk melakukannya".
  • Hal menarik tentang penggunaan pubgrub-rs oleh uv

    • Dinilai menarik bahwa uv menggunakan pubgrub-rs, implementasi Rust dari algoritme penyelesaian versi pubgrub yang awalnya ditulis untuk bahasa Dart, dan bahwa rantai inspirasi seperti ini terus berlanjut lintas bahasa.
  • Penyebutan prediksi tentang arah tim Astral

    • Disebutkan bahwa 11 hari sebelumnya telah ada prediksi bahwa tim Astral akan memperluas fungsi ruff agar dapat melakukan semua yang dibutuhkan pengembang Python.
  • Pengalaman pribadi tentang kecepatan pip

    • Ada pengalaman bahwa pip umumnya bekerja cepat, tetapi melambat saat harus mengunduh banyak data atau ketika kompilasi library native memakan waktu. Sebaliknya, conda sangat lambat, bahkan di mesin yang kuat.
  • Pandangan skeptis tentang manajer paket Python baru

    • Manajer paket Python lain telah muncul, tetapi jika ini benar-benar bisa menggantikan pip, maka orang bisa beralih seperti saat beralih ke ruff demi peningkatan kecepatan. Diperlukan solusi yang permanen untuk manajemen paket Python.
  • Rasa ingin tahu tentang keputusan uv membuat file requirements.txt khusus platform

    • Muncul rasa ingin tahu tentang alasan uv memilih membuat file requirements.txt yang spesifik per platform, alih-alih menghasilkan file poetry.lock dan pdm.lock yang tidak bergantung pada platform.
  • Ucapan selamat dan respons positif terhadap pekerjaan tim Astral

    • Ada kekhawatiran terhadap upaya dari luar untuk "memperbaiki" packaging Python, tetapi orang senang melihat bahwa kompatibilitas diprioritaskan. Upaya tim Astral untuk menekankan kompatibilitas dengan alat dan standar yang sudah ada juga dinilai positif.
  • Pertanyaan tentang masalah kompilasi pada paket pip

    • Beberapa paket pip memerlukan kompilasi yang bergantung pada seluruh toolchain seperti gcc, g++, gtk, Qt, dan lain-lain; muncul pertanyaan tentang bagaimana hal ini akan dibuat lebih minim error dan lebih ramah pengguna.