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 टिप्पणियां
Hacker News राय
free software community को Microsoft के operating system के लिए support बंद कर देना चाहिए, और scipy जैसी चीज़ों को उन्हें खुद port करने देना चाहिए
Python packaging के जटिल होने का कारण C/C++/Fortran build tools का non-standardization और बहुत बड़ा ecosystem है, यह Python की अपनी समस्या नहीं है
Meson build tool का MSVC+gfortran संयोजन को अस्वीकार करना एक bug लगता है
बहुत से लोग WSL2 का उपयोग करके समस्या हल कर रहे हैं, इसलिए यह जिज्ञासा है कि native Windows version बनाने की ज़रूरत क्यों है
सबसे बेहतरीन BLAS libraries में से अधिकतर C में लिखी गई हैं, और यह जिज्ञासा है कि सिर्फ C और Python से कितनी हद तक परिणाम हासिल किए जा सकते हैं
यह एक भोला-सा सवाल है कि क्या Fortran की semantics, C से इतनी अलग होने के बावजूद, उसे C में बदलकर फिर C compiler से compile नहीं किया जा सकता, और क्या उसे C में maintain करना संभव है
Python के build system में होने वाले बदलावों के साथ चलना मुश्किल है
यह सवाल है कि "aarch64" और "arm64" क्या एक ही चीज़ हैं
Fortran कभी IT विभागों में मज़ाक का विषय था, लेकिन पिछले कुछ वर्षों में उसने नाटकीय वापसी की है
compiler/architecture तालिका में "arm64" और "aarch64" के अंतर के बारे में सवाल
यह तो binary compile होने वाली भाषाओं पर हमारी लाचारी को बहुत ही नंगा करके दिखाने वाला मामला है।
क्या Python में तो समस्या हल हो गई, लेकिन दूसरे ecosystems में नहीं हो पाई? इसलिए ही शायद pre-built binaries उपलब्ध कराए जाते होंगे।