7 puan yazan GN⁺ 2024-02-16 | 3 yorum | WhatsApp'ta paylaş
  • uv, Rust ile yazılmış ultra hızlı bir Python paket yükleyicisi ve çözücüsüdür; pip ve pip-tools iş akışlarının yerini almak üzere tasarlanmıştır.
  • uv, "Python için Cargo" yolunda bir dönüm noktasıdır; hızlı, güvenilir ve kullanımı kolay, kapsamlı bir Python proje ve paket yöneticisidir.
  • Armin Ronacher tarafından deneysel olarak geliştirilen Python paketleme aracı Rye'ın bakımını devralarak uv'yi birleşik bir halef proje olarak genişletmeyi planlıyor.

Performansa takıntılı odak

  • uv, önbellek olmadan pip ve pip-tools'tan 8-10 kat daha hızlıdır; önbellek olduğunda ise 80-115 kat daha hızlıdır.
  • Genel bir modül önbelleği kullanarak bağımlılıkları yeniden indirme veya derleme ihtiyacını ortadan kaldırır; desteklenen dosya sistemlerinde Copy-on-Write ve hard link kullanarak disk alanı tüketimini en aza indirir.

Benimsemeyi kolaylaştırma

  • uv'nin ilk sürümü pip ve pip-tools API'lerini destekler; mevcut projelerde yapılandırma değişikliği olmadan kullanılabilir.
  • uv, tek bir statik binary olarak sunulur ve pip, pip-tools, virtualenv yerine geçebilir.
  • Python sürümüne göre pip kurulumunu yönetme ihtiyacı olmadan, Python'ın kendisinden ayrı olarak kurulabilir.

"Python için Cargo": uv ve Rye

  • uv, hızlı, güvenilir ve kullanımı kolay birleşik bir Python paket ve proje yöneticisine giden yolda bir ara dönüm noktasıdır.
  • uv; yalnızca pip, pip-tools, virtualenv değil, aynı zamanda pipx, tox, poetry, pyenv, ruff ve daha fazlasını kapsayan tek bir binary olmayı hedefler.

Uyumlu API

  • pip install yerine uv pip install kullanarak Python bağımlılıklarını komut satırından, gereksinim dosyalarından veya pyproject.toml içinden kurabilirsiniz.
  • pip-compile yerine uv pip compile kullanarak kilitli requirements.txt oluşturabilirsiniz.
  • pip-sync yerine uv pip sync kullanarak kilitli requirements.txt ile sanal ortamı senkronize edebilirsiniz.

Yol haritası

  • Bu sürümün ardından kullanıcı desteğine öncelik verip uyumluluk, performans ve kararlılık iyileştirmelerine odaklanmayı planlıyor.
  • Sonrasında uv'yi tam teşekküllü bir Python proje ve paket yöneticisine genişletmeyi hedefliyor.

Teşekkür

  • uv'nin geliştirilmesine doğrudan veya dolaylı katkı sunan herkese teşekkür ediyor.
  • Özellikle, PubGrub'ın temel sürüm çözücüsü olarak uv'de kullanılan Jacob Finkelman ve Matthieu Pizenberg'e teşekkür ediliyor.

GN⁺ görüşü

  • uv, Python geliştiricilerine mevcut pip araçlarına kıyasla çok daha yüksek performans sunarak proje kurulum sürelerini önemli ölçüde kısaltabilecek yenilikçi bir araçtır.
  • Rust ile yazılmış olması, Python ekosisteminde performans ve kararlılığı öne çıkaran yeni eğilimi yansıtıyor; bunun geliştirici deneyimini önemli ölçüde iyileştirmesi bekleniyor.
  • uv'nin geliştirilmesi, Python paketleme ve proje yönetimi araçlarının birleşmesine yöneliyor; bu da geliştiricilerin daha verimli ve tutarlı biçimde çalışmasını sağlayacaktır.

3 yorum

 
kyunghoon 2024-10-29

Gerçekten inanılmaz hızlı;;

 
ajh508 2024-02-17

Genişletilip conda'nın yerini alabilirse güzel olur.

 
GN⁺ 2024-02-16
Hacker News görüşleri
  • VC destekli pip-and-more hakkında soru işaretleri

    • Girişim sermayesiyle desteklenen pip-and-more'un, bedava para musluğu kapandığında nasıl gelir elde edeceğini anlamanın zor olduğu belirtiliyor.
  • uv'nin platformdan bağımsız lockfile oluşturmayı desteklememesi hakkında soru

    • uv'nin Poetry veya PDM'den farklı olarak platformdan bağımsız bir lockfile oluşturmaması konusunda, bu yaklaşımın requirements dosyalarına bağımlı göründüğü ve "Python'ın Cargo'su" olma hedefiyle örtüşmediği düşünülüyor.
  • uv'nin alternatif bağımlılık çözümleme stratejilerini desteklemesine olumlu yaklaşım

    • uv'nin varsayılan olarak en güncel uyumlu paket sürümlerini tercih eden standart Python bağımlılık çözümleme stratejisini izlediği, ancak --resolution=lowest seçeneğiyle en düşük uyumlu sürümlerle test yapma imkanı sunduğu belirtiliyor.
    • uv'nin --python-version parametresi aracılığıyla, o anda kurulu Python sürümünden farklı bir sürüm için çözüm üretebilmesi harika bulunuyor.
  • Python paket sisteminin karmaşıklığı hakkında soru

    • Python yorumlayıcısının değerleri arasında "tek bir açık yöntem olmalı" ilkesi yer alırken, paketleme konusunun nasıl bu kadar karmaşık hale geldiği sorgulanıyor.
  • uv'nin pubgrub-rs kullanmasının ilgi çekici yanı

    • uv'nin, ilk olarak Dart dili için yazılmış pubgrub sürüm çözümleme algoritmasının Rust implementasyonu olan pubgrub-rs'i kullanmasının, diller arası bu ilham zincirini görmek açısından eğlenceli olduğu ifade ediliyor.
  • Astral ekibinin izleyeceği yol hakkında bir öngörüye atıf

    • 11 gün önce, Astral ekibinin ruff'ın yeteneklerini genişleterek Python geliştiricilerinin ihtiyaç duyduğu her şeyi yapabilir hale getireceği yönünde bir tahminde bulunulduğundan bahsediliyor.
  • pip'in hızıyla ilgili kişisel deneyim

    • pip'in genel olarak hızlı çalıştığı, ancak çok fazla veri indirildiğinde veya native kütüphaneler derlenirken yavaşladığının deneyimlendiği söyleniyor. Buna karşılık conda'nın çok yavaş olduğu, hatta güçlü makinelerde bile yavaş kaldığı belirtiliyor.
  • Yeni bir Python paket yöneticisine dair şüpheci yaklaşım

    • Yine bir Python paket yöneticisi çıktığı, ancak eğer pip'in yerini alabilecek durumdaysa, hız kazanımı için ruff'a geçildiği gibi buna da geçilebileceği ifade ediliyor. Python paket yönetimi için kalıcı bir çözüme ihtiyaç olduğu vurgulanıyor.
  • uv'nin platforma özgü requirements.txt dosyaları üretme kararına dair merak

    • uv'nin platformdan bağımsız poetry.lock ve pdm.lock dosyaları üretmek yerine platforma özgü requirements.txt dosyaları üretmeyi neden tercih ettiği merak ediliyor.
  • Astral ekibinin çalışmalarına tebrik ve olumlu tepki

    • Astral ekibinin Python paketlemeyi "düzeltmeye" yönelik dış girişimler konusunda endişe duyulduğu, ancak uyumluluğun önceliklendirildiğini görmenin sevindirici olduğu ifade ediliyor. Astral ekibinin mevcut araçlar ve standartlarla uyumluluğu vurgulamak için çaba göstermesi olumlu değerlendiriliyor.
  • pip paketlerinde derleme sorunları hakkında soru

    • Bazı pip paketlerinin gcc, g++, gtk, Qt gibi tam bir toolchain gerektiren derlemelere ihtiyaç duyduğu, bunun nasıl daha az hataya açık ve daha kullanıcı dostu hale getirileceğinin sorulduğu belirtiliyor.