7 पॉइंट द्वारा GN⁺ 2024-02-16 | 3 टिप्पणियां | WhatsApp पर शेयर करें
  • uv, Rust में लिखा गया एक बेहद तेज़ Python पैकेज installer और resolver है, जिसे pip और pip-tools workflow को replace करने के लिए डिज़ाइन किया गया है
  • uv, "Cargo for Python" की दिशा में एक मील का पत्थर है — एक तेज़, भरोसेमंद और इस्तेमाल में आसान comprehensive Python project और package manager
  • Rye, जिसे Armin Ronacher ने experimental रूप से विकसित किया था, उस Python पैकेजिंग टूल के रखरखाव को संभालते हुए uv को एक एकीकृत successor project के रूप में विस्तार देने की योजना है

प्रदर्शन पर जुनूनी फोकस

  • uv, caching के बिना pip और pip-tools की तुलना में 8-10 गुना तेज़ है, और cache होने पर 80-115 गुना तेज़ है.
  • यह global module cache का उपयोग करता है ताकि dependencies को दोबारा download या build न करना पड़े, और समर्थित file system पर Copy-on-Write तथा hardlink का उपयोग करके disk space का इस्तेमाल न्यूनतम रखता है.

अपनाने के लिए अनुकूलन

  • uv की शुरुआती release, pip और pip-tools API को support करती है, इसलिए मौजूदा project में बिना configuration बदले इसका उपयोग किया जा सकता है.
  • uv एक single static binary के रूप में उपलब्ध है, और pip, pip-tools, virtualenv की जगह ले सकता है.
  • इसे Python version के हिसाब से pip installation को manage करने की ज़रूरत के बिना, Python से अलग install किया जा सकता है.

"Cargo for Python": uv और Rye

  • uv, एक तेज़, भरोसेमंद और इस्तेमाल में आसान एकीकृत Python package और project manager की दिशा में एक मध्यवर्ती मील का पत्थर है.
  • uv का लक्ष्य एक ऐसी single binary बनना है जो pip, pip-tools, virtualenv के साथ-साथ pipx, tox, poetry, pyenv, ruff आदि को भी समाहित करे.

संगत API

  • pip install की जगह uv pip install का उपयोग करके Python dependencies को command line, requirements file, या pyproject.toml से install किया जा सकता है.
  • pip-compile की जगह uv pip compile का उपयोग करके locked requirements.txt बनाया जा सकता है.
  • pip-sync की जगह uv pip sync का उपयोग करके locked requirements.txt और virtual environment को sync किया जा सकता है.

रोडमैप

  • इस release के बाद, योजना user support को प्राथमिकता देने और compatibility, performance तथा stability सुधारने पर ध्यान केंद्रित करने की है.
  • इसके बाद लक्ष्य uv को एक पूर्ण Python project और package manager के रूप में विस्तार देना है.

आभार

  • uv के विकास में सीधे या परोक्ष रूप से योगदान देने वाले सभी लोगों के प्रति आभार व्यक्त किया गया है.
  • विशेष रूप से, PubGrub को uv के मूल version resolver के रूप में उपयोग करने के लिए Jacob Finkelman और Matthieu Pizenberg का धन्यवाद किया गया है.

GN⁺ की राय

  • uv, Python डेवलपर्स को मौजूदा pip टूल की तुलना में कहीं तेज़ performance देता है, जिससे project setup समय को काफी कम किया जा सकता है.
  • Rust में लिखा होना Python ecosystem में performance और stability पर ज़ोर देने वाले नए trend को दर्शाता है, और उम्मीद है कि इससे developer experience में बड़ा सुधार होगा.
  • uv का विकास Python packaging और project management tools के एकीकरण की दिशा में है, जिससे डेवलपर्स अधिक कुशल और अधिक सुसंगत तरीके से काम कर सकेंगे.

3 टिप्पणियां

 
kyunghoon 2024-10-29

वाकई स्पीड कमाल की है;;

 
ajh508 2024-02-17

उम्मीद है कि यह इतना विस्तार पाए कि conda की जगह ले सके।

 
GN⁺ 2024-02-16
Hacker News की राय
  • VC-backed pip-and-more पर सवाल

    • यह समझना मुश्किल है कि venture capital से समर्थित pip-and-more, जब मुफ़्त पैसे की मशीन बंद हो जाएगी, तब कैसे कमाई करेगा.
  • uv में platform-independent lockfile generation के न होने पर सवाल

    • Poetry या PDM के विपरीत uv platform-independent lockfile नहीं बनाता; इस पर राय है कि यह approach requirements file पर निर्भर है और "Python का Cargo" बनने के लक्ष्य से मेल नहीं खाती.
  • uv के alternative dependency resolution strategy support पर सकारात्मक प्रतिक्रिया

    • uv डिफ़ॉल्ट रूप से standard Python dependency resolution strategy का पालन करता है, जो नवीनतम compatible package version को प्राथमिकता देती है, लेकिन --resolution=lowest विकल्प के ज़रिए सबसे कम compatible version के साथ test करने की सुविधा भी देता है.
    • --python-version parameter के माध्यम से मौजूदा installed Python version से अलग version के लिए resolution generate कर पाना शानदार है.
  • Python package system की जटिलता पर सवाल

    • यह सवाल उठाया गया कि Python interpreter के मूल सिद्धांतों में "एक स्पष्ट तरीका होना चाहिए" जैसी बात होने के बावजूद packaging की स्थिति इतनी जटिल कैसे हो गई.
  • uv द्वारा pubgrub-rs इस्तेमाल करना दिलचस्प

    • यह दिलचस्प बताया गया कि uv, Dart भाषा के लिए मूल रूप से लिखे गए pubgrub version resolution algorithm के Rust implementation pubgrub-rs का उपयोग करता है; भाषाओं के बीच प्रेरणा की यह कड़ी देखना मज़ेदार है.
  • Astral टीम की दिशा को लेकर उल्लेख

    • यह उल्लेख किया गया कि 11 दिन पहले ही अनुमान लगाया गया था कि Astral टीम ruff की capabilities बढ़ाकर उसे Python developers की लगभग हर ज़रूरत पूरी करने लायक बना देगी.
  • pip की speed पर व्यक्तिगत अनुभव

    • अनुभव साझा किया गया कि pip आमतौर पर तेज़ चलता है, लेकिन जब बहुत सारा data download करना हो या native libraries compile करनी हों, तब यह धीमा हो जाता है. दूसरी ओर, conda बहुत धीमा है, यहाँ तक कि powerful मशीनों पर भी.
  • नए Python package manager को लेकर संशय

    • एक और Python package manager आ गया है, लेकिन अगर यह सच में pip को replace कर सकता है, तो speed improvement के लिए जैसे ruff अपनाया गया था, वैसे इसे भी अपनाया जा सकता है. Python package management के लिए एक स्थायी समाधान की ज़रूरत है.
  • uv द्वारा platform-specific requirements.txt files बनाने के फ़ैसले पर जिज्ञासा

    • यह जानने की इच्छा जताई गई कि uv, platform-agnostic poetry.lock और pdm.lock जैसी files बनाने के बजाय platform-specific requirements.txt files क्यों बनाता है.
  • Astral टीम के काम पर बधाई और सकारात्मक प्रतिक्रिया

    • Python packaging को "ठीक" करने की बाहरी कोशिशों को लेकर चिंता जताई गई थी, लेकिन compatibility को प्राथमिकता मिलती देख खुशी व्यक्त की गई. Astral टीम द्वारा existing tools और standards के साथ compatibility पर ज़ोर देने के प्रयास को सकारात्मक रूप से देखा गया.
  • pip packages के compile issues पर सवाल

    • यह सवाल उठाया गया कि कुछ pip packages को gcc, g++, gtk, Qt जैसी पूरी toolchain पर निर्भर compilation की ज़रूरत होती है; इसे कम error-prone और ज़्यादा user-friendly बनाने की क्या योजना है.