- Xeus-Octave ist neu zum JupyterLite-Kernel-Ökosystem hinzugekommen und ermöglicht nun die direkte Ausführung von GNU-Octave-Code im Browser
- GNU Octave ist eine Matlab-kompatible Open-Source-Sprache für wissenschaftliches Rechnen; dieses Projekt portiert sie für den Betrieb in einer WebAssembly-(WASM)-Umgebung
- Um Probleme mit Fortran-basiertem Code und BLAS/LAPACK-Abhängigkeiten zu lösen, wurde eine benutzerdefinierte Toolchain aus LLVM Flang, Emscripten und Netlib LAPACK eingesetzt
- Da LLVM Fortran-Common-Symbole (Common Block) noch nicht unterstützt, wurde dies vorläufig mit einem provisorischen Patch gelöst; offizielle Unterstützung ist für LLVM 22 geplant
- Damit wird die Unterstützung in JupyterLite nach R nun auch auf Octave ausgeweitet, was einen wichtigen Schritt für den Ausbau des browserbasierten Ökosystems für wissenschaftliches Programmieren darstellt
Überblick über Xeus-Octave und die WebAssembly-Portierung
- Xeus-Octave ist ein Jupyter-Kernel, mit dem sich GNU-Octave-Code im Browser ausführen lässt, und wird über emscripten-forge paketiert
- GNU Octave ist eine kostenlose Open-Source-Sprache, die Matlab-Skripte direkt ausführen kann
- Durch diese Integration ist die Nutzung in JupyterLite sofort und ohne separate Installation möglich
- Ähnlich wie beim zuvor entwickelten Xeus-R-Lite kommt eine Toolchain zum Kompilieren von Fortran-Code (LLVM Flang + Emscripten) zum Einsatz
- Für Octaves Abhängigkeitsbibliotheken für mathematische Operationen wurde Netlib LAPACK statt OpenBLAS gewählt, um die Build-Kompatibilität zu verbessern
Technische Herausforderungen beim WebAssembly-Build-Prozess
- Wegen Problemen bei der Unterstützung von Fortran-Common-Blöcken (Common Symbol Block) traten in LLVM Build-Fehler auf
- Da der Wasm-Streamer in LLVM v20 keine Common-Symbole implementiert, waren Codeänderungen nötig
- Durch die Zusammenarbeit des QuantStack-Teams mit Serge Guelton wurde LLVM mit einem provisorischen Patch angepasst und die Symbole als schwache Symbole (weak symbols) behandelt
- Die offizielle Unterstützung soll in LLVM v22 enthalten sein; die aktuell gepatchte LLVM-Version ist für Linux veröffentlicht
- Auch Octave selbst wurde für das WASM-Ziel angepasst, unter anderem durch die Deaktivierung von GUI-Funktionen und die Vereinheitlichung von Fortran-Funktionssignaturen
Xeus-Octave-Integration und Demonstration
- Nach Abschluss des Builds lässt sich Xeus-Octave in JupyterLite ausführen, indem lediglich ein emscripten-forge-Rezept hinzugefügt wird
- Xeus-Octave basiert auf dem C++-basierten Jupyter-Kernel-Framework Xeus und ermöglicht die Ausführung und Visualisierung von Octave-Befehlen direkt im Browser
Nächste Schritte
- Als Nächstes soll das Octave-Paketökosystem in conda-forge und emscripten-forge integriert werden
- Dafür soll Octaves
pkg-Utility für Browser-Umgebungen angepasst werden, um den Installationsprozess innerhalb einer conda-Umgebung zu definieren
- Dadurch dürfte die browserbasierte Programmierumgebung für Wissenschaft und Mathematik weiter gestärkt werden
Wichtige Mitwirkende und Hintergrund
- Die leitende Entwicklerin Isabel Paredes von QuantStack war zuvor für die WebAssembly-Portierung der Programmiersprache R und des ROS-Frameworks verantwortlich
- Emscripten-forge wird von Thorsten Beier geleitet, mit Beiträgen mehrerer Mitwirkender wie Anutosh Bhat und Martin Renou
- JupyterLite wird vor allem von Jeremy Tuloup gepflegt, Xeus insbesondere von Johan Mabille
- Xeus-Octave wurde von Giulio Girardi und Antoine Prouvost entwickelt
1 Kommentare
Hacker-News-Kommentar