Fortran और WebAssembly का संयोजन
- Fortran 1957 में पहली बार सामने आई एक पुरानी प्रोग्रामिंग भाषा है, और यह C भाषा, Intel 4004 CPU, तथा IBM System/360 mainframe computer से भी पुरानी है.
- Fortran का उपयोग वैज्ञानिक और इंजीनियरिंग applications में computation-intensive कामों के लिए होता रहा है, और कुछ लोग इसे numerical operations में C से अधिक efficient मानते हैं.
- यह ब्लॉग पोस्ट बताती है कि मौजूदा Fortran code को WebAssembly में compile करके web browser में कैसे चलाया जा सकता है.
समस्या क्या है?
- Fortran को WebAssembly में compile करने के कई तरीके हैं, लेकिन कोई भी तरीका सभी features को पूरी तरह support नहीं करता.
- हर तरीके की अपनी कमियाँ हैं, और यह कोई सरल plug-and-play solution नहीं है.
Compiler सारांश
- LLVM-आधारित Fortran compilers में कुछ बदलाव हुए हैं.
- f2c utility Fortran 77 को C code में बदलती है, लेकिन यह modern Fortran code के साथ compatible नहीं है.
- LFortran compiler अब कई features support करता है, लेकिन फिर भी कुछ projects में समस्याएँ आ सकती हैं.
- Dragonegg, GCC का एक plugin है जो LLVM IR बनाता है, लेकिन इसके लिए GCC और LLVM के पुराने versions चाहिए.
- Classic Flang 32-bit output support नहीं करता, और LLVM Flang अभी default रूप से WebAssembly output generate नहीं करता.
LLVM Flang के साथ WebAssembly build और उपयोग
- WebAssembly target लागू करने के लिए LLVM Flang source में बदलाव करने पड़ते हैं.
- LLVM की modular design का उपयोग करके Flang frontend और WebAssembly backend का इस्तेमाल किया जा सकता है.
C से Fortran subroutine को call करना
- इसमें यह दोहराया गया है कि Fortran subroutine को C program के हिस्से के रूप में compile और link कैसे किया जाए.
LLVM Flang पर वापस
- LLVM Flang compiler से Fortran subroutine को compile किया जा सकता है, लेकिन क्योंकि WebAssembly target अभी लागू नहीं हुआ है, source code पर patch लगाना पड़ता है.
JavaScript से Fortran routine को call करना
- Emscripten का उपयोग करके Fortran object को link किया जा सकता है और JavaScript से सीधे call किया जा सकता है.
Fortran runtime library: "Hello, World!" तक की यात्रा
- इसमें उन समस्याओं का वर्णन है जो Fortran में "Hello, World!" program build करने की कोशिश करते समय आती हैं.
- LLVM Fortran runtime library को WebAssembly के लिए compile करना पड़ता है.
GN⁺ की राय
- यह लेख दिखाता है कि Fortran जैसी पारंपरिक भाषा को आधुनिक web technologies के साथ integrate करने की कोशिश कैसे की जा रही है. ऐसा approach मौजूदा, प्रमाणित numerical computing libraries को web तक लाने में उपयोगी हो सकता है.
- Fortran को WebAssembly में compile करने की प्रक्रिया अच्छी तरह दिखाती है कि मौजूदा codebase को नए platform पर port करते समय कैसी चुनौतियाँ आती हैं. खासकर cross-compiling से जुड़ी समस्याएँ दूसरी भाषाओं या platforms पर porting करते समय भी महत्वपूर्ण रहती हैं.
- यह तकनीक दिलचस्प है, लेकिन वास्तव में web पर high-performance numerical computing workloads चलाने में अभी भी practical limitations हैं. WebAssembly अभी पारंपरिक native applications जितनी performance न दे पाए.
- LLVM Flang का development बहुत सक्रिय है, और ऐसी development efforts से Fortran community पर सकारात्मक असर पड़ने की उम्मीद है. हालांकि, इस लेख में बताई गई विभिन्न समस्याएँ यह भी दिखाती हैं कि अभी कई चुनौतियाँ हल होना बाकी हैं.
- यह लेख उन developers के लिए उपयोगी जानकारी देता है जो Fortran को web technologies के साथ integrate करना चाहते हैं, खासकर उन लोगों के लिए जो numerical analysis या scientific computing के क्षेत्र में web-based tools बनाने पर विचार कर रहे हैं.
1 टिप्पणियां
Hacker News राय
जॉर्ज ने WebR प्रोजेक्ट में वेब ब्राउज़र में R चलाने के लिए काम करते हुए Fortran पर जो अध्ययन किया, उस पर चर्चा
20 साल पहले Xilinx में FORTRAN compiler पर काम करने का अनुभव साझा किया गया
LLVM project के नवीनतम source का उपयोग करके f18 build करने की सिफारिश
"सबसे सरल non-trivial example" वाले approach से समझाने के तरीके की प्रशंसा
WebAssembly development के बारे में जानकारी की कमी का ज़िक्र
JavaScript में linear algebra के लिए "production"-ready ecosystem मौजूद है या नहीं, इस पर सवाल
1981/82 में लिखे गए Fortran 78 code को अगर संभालकर रखा होता, तो आज उसे चलाकर देखने की इच्छा जताई गई
LFortran का ज़्यादा उल्लेख न होना अजीब बताया गया
.NET और Java में Fortran के उपयोग के बारे में जानकारी दी गई
TensorFlow को browser के लिए compile करने का अनुभव साझा किया गया