3 पॉइंट द्वारा GN⁺ 2025-10-21 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Xeus-Octave अब JupyterLite kernel ecosystem का हिस्सा बन गया है, जिससे ब्राउज़र में सीधे GNU Octave कोड चलाना संभव हो गया है
  • GNU Octave एक Matlab-compatible open source scientific computing language है, और इस प्रोजेक्ट में इसे WebAssembly (WASM) वातावरण में चलने के लिए port किया गया है
  • Fortran-आधारित कोड और BLAS/LAPACK dependencies से जुड़ी समस्याओं को हल करने के लिए LLVM Flang, Emscripten, Netlib LAPACK को मिलाकर एक custom toolchain का उपयोग किया गया
  • क्योंकि LLVM अभी Fortran common symbol (Common Block) को support नहीं करता, इसलिए अस्थायी patch से इसे फिलहाल संभाला गया है और आगे LLVM 22 में आधिकारिक support आने की योजना है
  • इससे JupyterLite में R के बाद Octave का support भी जुड़ गया है, और ब्राउज़र-आधारित scientific programming ecosystem के विस्तार की दिशा में यह एक महत्वपूर्ण कदम है

Xeus-Octave और WebAssembly porting का overview

  • Xeus-Octave एक Jupyter kernel है जो ब्राउज़र में GNU Octave कोड चलाने देता है, और इसे emscripten-forge के जरिए package किया गया है
    • GNU Octave एक free और open source language है जो Matlab scripts को सीधे चला सकता है
    • इस integration के बाद इसे JupyterLite में बिना अलग installation के तुरंत इस्तेमाल किया जा सकता है
  • पहले विकसित किए गए Xeus-R-Lite की तरह, इसमें भी Fortran code compilation toolchain (LLVM Flang + Emscripten) का उपयोग किया गया है
  • Octave की mathematical operations dependencies के लिए OpenBLAS की जगह Netlib LAPACK चुना गया, ताकि build compatibility बेहतर हो

WebAssembly build process की तकनीकी चुनौतियाँ

  • Fortran common block (Common Symbol Block) support की समस्या के कारण LLVM में build error आया
    • LLVM v20 का Wasm streamer common symbol को implement नहीं करता, इसलिए code modification की जरूरत पड़ी
    • QuantStack टीम और Serge Guelton के सहयोग से LLVM में अस्थायी patch लगाया गया, जो इसे weak symbol की तरह handle करता है
  • आधिकारिक support LLVM v22 release में शामिल होने की उम्मीद है, और फिलहाल patched LLVM version Linux के लिए उपलब्ध कराया गया है
  • Octave में भी WASM target के अनुरूप GUI features को disable करने और Fortran function signatures को unify करने जैसे बदलाव किए गए

Xeus-Octave integration और demo

  • build पूरा होने के बाद, सिर्फ emscripten-forge recipe जोड़कर JupyterLite में Xeus-Octave चलाना संभव हो गया
    • डेमो notebook में real-time plotting का प्रदर्शन देखा जा सकता है
  • Xeus-Octave, C++-आधारित Jupyter kernel framework Xeus पर बना है, जो ब्राउज़र में Octave commands चलाने और visualization करने देता है

आगे की योजना

  • अगले चरण में, Octave package ecosystem को conda-forge और emscripten-forge में integrate करने की योजना है
    • Octave की pkg utility को browser environment के अनुसार ढालकर conda environment में installation process परिभाषित किया जाएगा
  • इससे ब्राउज़र-आधारित scientific और mathematical programming environment और मजबूत होने की संभावना है

प्रमुख योगदानकर्ता और पृष्ठभूमि

  • प्रमुख डेवलपर Isabel Paredes QuantStack से हैं, और उन्होंने पहले R language और ROS framework के WebAssembly porting पर काम किया है
  • Emscripten-forge का नेतृत्व Thorsten Beier करते हैं, और इसमें Anutosh Bhat, Martin Renou सहित कई contributors शामिल हैं
  • JupyterLite का रखरखाव Jeremy Tuloup और Xeus का रखरखाव Johan Mabille के नेतृत्व में हो रहा है
  • Xeus-Octave को Giulio Girardi और Antoine Prouvost ने विकसित किया है

1 टिप्पणियां

 
GN⁺ 2025-10-21
Hacker News राय
  • अगर कोई Octave के बारे में पहली बार सुन रहा है, तो Octave व्यावसायिक सॉफ़्टवेयर MATLAB की एक open source लगभग-प्रतिलिपि है Wikipedia पर विस्तार से देखें
    • "लगभग-प्रतिलिपि" कहना थोड़ा बढ़ा-चढ़ाकर कहना होगा; मुझे open source सॉफ़्टवेयर पसंद है, लेकिन थोड़ा अधिक उन्नत काम के लिए अब भी लगता है कि Octave MATLAB को पूरी तरह पकड़ नहीं पाया है, Octave और MATLAB के अंतर देखें
    • Professor Andrew Ng के शुरुआती machine learning MOOC में Octave इस्तेमाल हुआ था, इसलिए अगर आप अभ्यास सामग्री और उदाहरण ढूंढ रहे हैं तो यह उपयोगी है, YouTube playlist
    • 15 साल पहले स्नातक के दौरान numerical analysis के कोर्स में मैंने MATLAB की जगह Octave इस्तेमाल किया था, और उस समय हम जो कर रहे थे उसके लिए language compatibility पूरी तरह ठीक थी
    • मैं MATLAB उपयोगकर्ता नहीं हूँ, लेकिन यह महसूस होता है कि सिर्फ language की प्रतिलिपि बना देने से MATLAB जैसा सब कुछ नहीं मिल जाता; MATLAB एक GUI-आधारित software suite है, जिसमें बिना coding के इस्तेमाल होने वाले कई apps शामिल हैं, और आधिकारिक vendor support भी मिलता है; पहले open source को अजीब या अविश्वसनीय मानने की धारणा थी, लेकिन हाल के वर्षों में यह क्षेत्र भी तेज़ी से बदल रहा है
    • Scilab भी MATLAB की नकल करने वाला एक और software है, लेकिन Octave की तुलना में यह compatibility से ज़्यादा functionality पर ध्यान देता है
  • जो लोग JupyterLite के बारे में पहली बार सुन रहे हैं, उनके लिए: यह मौजूदा Jupyter Notebook/Lab जैसा ही है, लेकिन पूरी तरह browser में ही चलता है; किसी server या backend की ज़रूरत नहीं होती, सब कुछ client side पर चलता है
    • अगर Python Web Assembly पर चलता है, तो लगता है कि इसकी speed काफ़ी धीमी होगी
  • इसी तकनीक (यानी "xeus-stack" xeus-stack लिंक) के ज़रिए jupyterlite में चल सकने वाली languages/kernels की variety कहीं ज़्यादा है; उदाहरण के लिए c++, python, R, lua, javascript आदि समर्थित हैं; इसे आज़माने के लिए Try Jupyter Lab या JupyterLite दस्तावेज़ देखें, और अगर आप अपना deployment करना चाहते हैं तो xeus-lite-demo template repo का उपयोग कर सकते हैं
  • Octave लंबे समय से अनगिनत छात्रों का प्रिय रहा है और स्नातक छात्रों के लिए एक ज़रूरी विकल्प की भूमिका निभाता आया है; यह GNU द्वारा मानव प्रगति में योगदान का एक अच्छा उदाहरण है, numerical analysis के लिए इसकी ज़ोरदार सिफारिश है, और GNU-Fortran या GNU-C से इसे आसानी से extend भी किया जा सकता है; कई extensions साथ में उपलब्ध हैं; यह संख्या-आधारित गणना के लिए विशेषीकृत DSL है; इसी तरह Scilab भी एक अनुशंसित package है, लेकिन इसकी extensibility कम है
  • मुझे हमेशा लगता है कि लेखक जिन अलग-अलग मुद्दों का ज़िक्र करते हैं, उनमें असली आकर्षण कहीं दब जाता है; अगर diagrams को थोड़ा आगे लाया जाए, और अगले release की features व उन्हें बनाने की प्रक्रिया की समस्याओं को ज़्यादा उभारा जाए, तो शायद बेहतर होगा
  • मैं हमेशा GNU Octave को दूसरी languages में transpile करना चाहता था; Octave को पहले से C library के रूप में embed किया जा सकता था, और C/C++ में Octave embed करने का तरीका तथा आधिकारिक standalone program दस्तावेज़ देखे जा सकते हैं। GPU acceleration को support करने वाला OpenCL package भी है, OpenCL package देखें; अफ़सोस की बात है कि यह GPU का implicit उपयोग नहीं करता, बल्कि explicit GPU types और functions देता है, oclArray संदर्भ का मतलब है कि मौजूदा Octave code को ज्यों-का-त्यों GPU पर चलाने वाली संरचना नहीं है। अगर browser में भी OpenCL-आधारित GPU acceleration लागू हो जाए तो बढ़िया होगा, लेकिन WebCL अभी implementation स्तर तक नहीं पहुँचा है, WebCL संबंधित दस्तावेज़, Khronos WebCL देखें; अभी रुझान यह है कि WebCL की जगह WebGPU ले रहा है, Chrome में WebCL उपयोग, gpuweb standardization guide, Chrome web API दस्तावेज़ देखें।
    • अगर अपनी राय साफ़ तौर पर कहूँ, तो यह स्पष्ट है कि उद्योग साफ़ open solutions की जगह commercial तरीकों पर इसलिए अड़ा रहता है क्योंकि उसमें मुनाफ़ा है; blue LED जैसी अनेक innovations का इतिहास भी यही दिखाता है। उम्मीद है कि अगर AI की वजह से developers पर बोझ थोड़ा कम हुआ, तो शायद हम फिर से ऐसे स्पष्ट रास्तों की खोज कर पाएँगे; सच तो यह है कि हर तकनीकी innovation developers पर और ज़्यादा बोझ तथा अधिक steep learning curve डालती है, फिर भी compensation (entry salary) व्यावहारिक रूप से वहीं का वहीं रहता है; अगर AI pair programming फैलता है, तो उल्टा code quality गिरने और बहुत जटिल codebase बनने की भी चिंता है।
    • इसलिए मैं वैकल्पिक तरीकों की ओर खिंचता हूँ; उदाहरण के लिए Python में जिस abstraction को लंबा-चौड़ा लिखना पड़ता है, उसे Octave में एक पंक्ति में व्यक्त किया जा सकता है। और अगर उससे भी अधिक संक्षिप्त होना हो, तो LISP जैसी functional assembly language की ओर जाना पड़ेगा, लेकिन तब array languages की syntactic convenience छोड़नी पड़ेगी।
    • मूल बात यह है कि J.A.R.V.I.S./Star Trek शैली के AI तक सीधा जाने वाला रास्ता Octave/MATLAB जैसे DSL और 1980 के दशक के business logic tools—जैसे Spreadsheets, HyperCard, Microsoft Access, FileMaker—से होकर जाता है; अगर GPU-accelerated open Octave जैसा कोई tool आ जाए, तो software लिखने की efficiency बढ़ेगी, और शायद AI की प्रगति में भी सीधे योगदान दे सकेगा