3 पॉइंट द्वारा GN⁺ 2023-11-09 | 3 टिप्पणियां | WhatsApp पर शेयर करें

Python 3.12 वर्ज़न के लिए SciPy build चमत्कार जैसा क्यों है

  • हाल ही में Python 3.12 वर्ज़न जारी हुआ।
  • प्रमुख packages का नए Python वर्ज़न के साथ compatible release तुरंत जारी करना सामान्य बात होती है।
  • SciPy ने Python 3.12-compatible build जारी किया, यह कई timelines के एक साथ मेल खाने से संभव हुआ एक सौभाग्यपूर्ण परिणाम था।

Fortran और compiler की भूमिका

  • Fortran 1950 के दशक से एक महत्वपूर्ण programming language रही है, और बहुत-सा scientific code Fortran में लिखा गया है।
  • विभिन्न Fortran compilers मौजूद थे, लेकिन वे सभी proprietary थे।
  • compiler का काम programmer द्वारा लिखे गए code को ऐसे रूप में बदलना है जिसे computer चला सके।
  • GCC एक freely usable compiler है, जो विभिन्न CPU architectures और operating systems को support करता है।

Python और performance की समस्या

  • Python को compiler के बिना इस्तेमाल किया जा सकता है, लेकिन यह compiled languages की तुलना में धीमा है।
  • जहाँ performance महत्वपूर्ण हो, वहाँ compiled code का उपयोग करके उसे Python interface से wrap करना एक अच्छा समाधान है।
  • NumPy और SciPy performance के लिए Fortran code का उपयोग करते हैं, और इसी वजह से package install करते समय user को compiler की आवश्यकता होती है।

Python packaging की समस्या

  • Python packaging जटिलता के कारण लगातार फिर से गढ़ी जाती रही है।
  • source code को सीधे download करने पर user को compiler setup करना पड़ता है, और build time भी लंबा हो सकता है।
  • wheel format ने package के लिए आवश्यक libraries को साथ शामिल करके distribution का बेहतर तरीका दिया।

conda और conda-forge का आगमन

  • conda packaging के लिए आवश्यक हर चीज़ को शामिल करने वाला अधिक व्यापक approach देता है।
  • conda-forge एक community-driven channel है, जो package integration का काम करता है।
  • conda-forge सभी सामान्य platforms को support करने की कोशिश करता है और volunteers द्वारा चलाया जाता है।

SciPy द्वारा build tool के रूप में Meson का चयन

  • SciPy ने build tool के रूप में Meson को चुना।
  • Meson Python-style interface देता है और CMake की तुलना में कम जटिल है।
  • Meson की design philosophy ऐसी है कि यह non-expert users को गलत तरीके से काम करने की अनुमति नहीं देता।

Fortran की वापसी और LLVM

  • हाल के वर्षों में Fortran में रुचि बढ़ी है।
  • LLVM-based नए Fortran compiler के विकास में तेज़ी आई है।
  • LLVM ऐसा compiler infrastructure देता है जो विभिन्न architectures और platforms पर काम करता है।

SciPy का Meson migration और conda-forge की समस्या

  • SciPy ने Meson पर migration किया, लेकिन Windows के लिए Fortran compiler की कमी के कारण समस्या हुई।
  • conda-forge को Python 3.12 migration के लिए सभी संबंधित packages को फिर से build करना पड़ा।

'Yukatastrophe' का अर्थ और GN⁺ की राय

  • SciPy test suite 100% pass हो गया, जिससे conda-forge पर Python 3.12-compatible SciPy build संभव हो गया।
  • यह कई प्रयासों और संयोगों के एक साथ आने का परिणाम था, जिससे Python community को बड़ा लाभ मिला।
  • GN⁺ की राय: यह लेख दिखाता है कि Python community का प्रयास और सहयोग किस तरह जटिल technical समस्याओं को हल कर सकता है। Python 3.12 के साथ compatible SciPy build का सफल release scientific computing के क्षेत्र में एक महत्वपूर्ण प्रगति है, और यह open source software की ताकत तथा community की शक्ति का प्रतीक है।

3 टिप्पणियां

 
GN⁺ 2023-11-09
Hacker News राय
  • free software community को Microsoft के operating system के लिए support बंद कर देना चाहिए, और scipy जैसी चीज़ों को उन्हें खुद port करने देना चाहिए

    • जिन्हें Linux चाहिए, वे उसे WSL2 में पा सकते हैं
    • Microsoft को बाकी सभी operating system vendors की तरह, जैसा वे 60 सालों से करते आए हैं, operating system में compiler शामिल करना चाहिए
  • Python packaging के जटिल होने का कारण C/C++/Fortran build tools का non-standardization और बहुत बड़ा ecosystem है, यह Python की अपनी समस्या नहीं है

    • इस जटिलता का एक हिस्सा ऐसा है जिसे कम नहीं किया जा सकता
    • Python packaging system का चल पाना ही अपने आप में एक चमत्कार है
  • Meson build tool का MSVC+gfortran संयोजन को अस्वीकार करना एक bug लगता है

    • build tool का उद्देश्य वही commands चलाना है जो user ने कहा है, न कि user को मना करना
  • बहुत से लोग WSL2 का उपयोग करके समस्या हल कर रहे हैं, इसलिए यह जिज्ञासा है कि native Windows version बनाने की ज़रूरत क्यों है

  • सबसे बेहतरीन BLAS libraries में से अधिकतर C में लिखी गई हैं, और यह जिज्ञासा है कि सिर्फ C और Python से कितनी हद तक परिणाम हासिल किए जा सकते हैं

    • Fortran शायद ऐसा हिस्सा है जिससे बचा नहीं जा सकता, लेकिन Windows पर Fortran tools में सुधार शुरू होना सकारात्मक है
  • यह एक भोला-सा सवाल है कि क्या Fortran की semantics, C से इतनी अलग होने के बावजूद, उसे C में बदलकर फिर C compiler से compile नहीं किया जा सकता, और क्या उसे C में maintain करना संभव है

    • अनुमान है कि पुरानी libraries को maintain करने वाले Fortran experts बहुत ज़्यादा नहीं होंगे, और maintenance की ज़रूरत है
  • Python के build system में होने वाले बदलावों के साथ चलना मुश्किल है

    • Windows पर performance numbers देखने की जिज्ञासा है, लेकिन उम्मीद है कि ज़्यादातर गंभीर काम Linux machines पर ही चलेंगे
  • यह सवाल है कि "aarch64" और "arm64" क्या एक ही चीज़ हैं

    • Wikipedia में ARM64, AArch64 पर redirect होता है
  • Fortran कभी IT विभागों में मज़ाक का विषय था, लेकिन पिछले कुछ वर्षों में उसने नाटकीय वापसी की है

    • इस वापसी का कारण स्पष्ट नहीं है, लेकिन संबंधित links से इसे समझा जा सकता है
  • compiler/architecture तालिका में "arm64" और "aarch64" के अंतर के बारे में सवाल

    • Wikipedia के ARM64 लेख के AArch64 पर redirect होने का उल्लेख
 
ahwjdekf 2023-11-10

यह तो binary compile होने वाली भाषाओं पर हमारी लाचारी को बहुत ही नंगा करके दिखाने वाला मामला है।

 
kayws426 2023-11-10

क्या Python में तो समस्या हल हो गई, लेकिन दूसरे ecosystems में नहीं हो पाई? इसलिए ही शायद pre-built binaries उपलब्ध कराए जाते होंगे।