uv-build का उपयोग न करने की एक अपील

uv-build नाम का Rust-आधारित Python build backend Gentoo maintainers की आलोचना का सामना कर रहा है, जो कहते हैं कि इसकी बार-बार होने वाली releases और binary-केंद्रित distribution model एक source-based, अत्यधिक customizable distro के लिए मुश्किलें पैदा करती हैं, जिसे users की machines पर सब कुछ rebuild करना पड़ता है। समर्थक जवाब देते हैं कि Python के packaging standards, semantic versioning, और prebuilt manylinux wheels अधिकांश developers के लिए अच्छी तरह काम करते हैं, और कि Gentoo upstreams से आधुनिक tooling से बचने की अपेक्षा करने के बजाय अपनी policies समायोजित कर सकता है या versions pin कर सकता है। तकनीकी विवरणों के पीछे mainstream platforms और workflows के लिए optimize करने बनाम 32-bit architectures, SPARC, या HP-UX जैसे niche या legacy systems की portability और viability बनाए रखने के बीच एक व्यापक तनाव है.

Gentoo बनाम uv-build: मुख्य शिकायत

  • Gentoo लगभग सब कुछ स्रोत से बनाता है और पुनरुत्पादनीय, स्थिर बिल्ड चाहता है।
  • uv-build एक Rust-आधारित Python build backend है, जो binary wheels के रूप में शिप किया जाता है और बार-बार अपडेट होता है।
  • Gentoo का तर्क है कि:
    • हर backend अपडेट effectively uv-build और उसे उपयोग करने वाले सभी Python packages के rebuild को मजबूर करता है।
    • यह build time के लिहाज़ से महंगा है, खासकर user machines पर और exotic architectures पर जहाँ कोई binaries मौजूद नहीं होतीं।
    • Rust-based tooling legacy/obscure platforms और 32-bit systems पर बाधाएँ बढ़ाता है, जहाँ Rust या uv-build उपलब्ध नहीं हो सकते।

Versioning, semantics, और “कौन तय करता है”

  • uv-side के तर्क:
    • Python packaging interface level पर standardized है (PEP 517); backends conformant हों तो interchangeable हैं।
    • uv-build semver ranges को default करता है; exact versions pin करना opt-in है और rebuild churn का असली कारण है।
    • किसी backend version को unconstrained छोड़ना तकनीकी रूप से “latest का उपयोग करो” नहीं दर्शाता; installers पहले से मौजूद किसी भी compatible version को reuse करने के लिए स्वतंत्र हैं।
  • प्रतिवाद:
    • Gentoo और अन्य कहते हैं कि व्यवहार में fresh virtualenv builds range के भीतर newest version fetch करेंगे।
    • कुछ लोग तर्क देते हैं कि distros के लिए backend एक dependency है; reproducibility के लिए कोई भी बदलाव builds को invalidate कर देना चाहिए।
    • इस पर असहमति है कि क्या Gentoo का “backend change पर rebuild” Python के standards से आवश्यक है या self-imposed policy है।

Source बनाम binaries और performance

  • कुछ टिप्पणीकार कहते हैं कि uv-build का तेज़ Rust implementation और frequent updates अधिकांश लोगों के लिए ठीक हैं जो binaries install करते हैं।
  • अन्य तर्क देते हैं कि source-first distros (Gentoo, NixOS, आदि) Rust-heavy backends के लिए असंगत रूप से अधिक लागत चुकाते हैं।
  • Gentoo के raison d’être पर बहस:
    • आलोचक सब कुछ compile करने को “hobbyist zealotry” कहते हैं और binaries या Nix-like caches इस्तेमाल करने की सलाह देते हैं।
    • समर्थक कहते हैं कि Gentoo flexibility/control (USE flags, CPU tuning) के बारे में है, केवल performance-maxing के बारे में नहीं।

Portability, Rust, और long-tail platforms

  • चिंता जताई गई कि uv-build जैसे Rust-based tools और CPython में संभावित Rust support SPARC, HP-UX, 32-bit, और इसी तरह के platforms के समर्थन को कम करते हैं।
  • कुछ का तर्क है “अगर यह compile हो जाता है, तो स्थानीय विशेषज्ञ अक्सर इसे काम कराने में सक्षम होते हैं”; अन्य कहते हैं कि “compile हो जाना” और “काम करना” बहुत अलग बातें हैं।
  • mainstream tier-1 platforms पर ध्यान केंद्रित करने बनाम niche systems की long tail को संरक्षित रखने के बीच तनाव है।

किसे अनुकूल होना चाहिए?

  • एक पक्ष: upstreams और users को स्वतंत्र रूप से uv-build अपनाना चाहिए; Gentoo अपनी policies patch, cache, या relax कर सकता है।
  • दूसरा पक्ष: जहाँ संभव हो projects को simple/pure-Python backends को default करना चाहिए ताकि ecosystem costs source-based distros पर न डाले जाएँ।