3 Punkte von GN⁺ 2025-10-21 | 1 Kommentare | Auf WhatsApp teilen
  • 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

 
GN⁺ 2025-10-21
Hacker-News-Kommentar
  • Falls jemand Octave noch nie gehört hat: Octave ist eine Open-Source-Quasi-Kopie der kommerziellen Software MATLAB. Mehr dazu auf Wikipedia
    • „Quasi-Kopie“ ist etwas übertrieben. Ich mag Open-Source-Software, aber für fortgeschrittenere Arbeiten hat man immer noch das Gefühl, dass Octave MATLAB nicht vollständig eingeholt hat. Siehe die Unterschiede zwischen Octave und MATLAB
    • Da Octave in den frühen Machine-Learning-MOOCs von Professor Andrew Ng verwendet wurde, ist es nützlich, wenn man Übungsmaterialien und Beispiele sucht. YouTube-Playlist
    • Ich habe vor 15 Jahren im Bachelor im Kurs zur numerischen Analysis statt MATLAB Octave verwendet, und bei dem, was wir damals gemacht haben, war die Sprachkompatibilität vollständig gegeben.
    • Ich bin kein MATLAB-Nutzer, aber man merkt, dass es nicht reicht, nur die Sprache zu kopieren, um alles von MATLAB abzudecken. MATLAB ist eine GUI-basierte Software-Suite und enthält viele Apps, die sich auch ohne Programmierung verwenden lassen. Dazu kommt offizieller Vendor-Support. Früher galt Open Source in diesem Bereich oft als seltsam oder wenig vertrauenswürdig, aber das verändert sich in letzter Zeit schnell.
    • Scilab ist ebenfalls eine weitere MATLAB-Nachahmung, legt aber im Vergleich zu Octave den Schwerpunkt eher auf Funktionalität als auf Kompatibilität.
  • Für alle, die JupyterLite noch nie gehört haben: Es ist wie das klassische Jupyter Notebook/Lab, läuft aber vollständig nur im Browser. Es braucht weder Server noch Backend, alles läuft clientseitig.
    • Python auf Web Assembly wirkt, als müsste es ziemlich langsam sein.
  • Mit derselben Technik (also „xeus-stack“) xeus-stack-Link gibt es deutlich mehr Sprachen/Kernels, die in JupyterLite laufen können, zum Beispiel c++, python, R, lua, javascript usw. Wer es ausprobieren will, kann Try Jupyter Lab oder die JupyterLite-Dokumentation nutzen. Wer eine eigene Distribution bereitstellen möchte, kann das xeus-lite-demo-Template-Repo verwenden.
  • Octave wird seit langer Zeit von unzähligen Studierenden geschätzt und war für Bachelor-Studierende eine unverzichtbare Alternative. Es ist ein gutes Beispiel dafür, wie GNU zum Fortschritt der Menschheit beigetragen hat. Für numerische Berechnungen ist es sehr zu empfehlen, und es lässt sich auch leicht mit GNU-Fortran oder GNU-C erweitern. Mehrere Erweiterungen werden gleich mitgeliefert. Es ist eine auf numerische Berechnungen spezialisierte DSL. Ähnlich ist auch Scilab ein empfehlenswertes Paket, aber weniger erweiterbar.
  • Ich habe immer das Gefühl, dass der eigentliche Reiz unter den vielen Problemen, die der Autor anspricht, etwas untergeht. Ich fände es besser, wenn das Diagramm weiter vorne käme und die Features des nächsten Releases sowie die Probleme bei ihrer Umsetzung stärker hervorgehoben würden.
  • Ich wollte GNU Octave schon immer in andere Sprachen transpilen. Octave ließ sich bereits als C-Bibliothek einbetten; siehe So bettet man Octave in C/C++ ein und die offizielle Dokumentation zu Standalone-Programmen. Es gibt auch ein OpenCL-Paket mit GPU-Beschleunigung, siehe das OpenCL-Paket. Leider nutzt es die GPU nicht implizit, sondern stellt explizite GPU-Typen und Funktionen bereit. oclArray-Referenz Das bedeutet, dass vorhandener Octave-Code nicht einfach unverändert auf der GPU laufen kann. Es wäre großartig, wenn OpenCL-basierte GPU-Beschleunigung auch im Browser umgesetzt würde, aber WebCL ist nie wirklich bis zur Implementierungsreife gekommen. Siehe Dokumentation zu WebCL und Khronos WebCL. Der Trend geht inzwischen dahin, dass WebCL durch WebGPU ersetzt wird. Siehe Verwendung von WebCL in Chrome, Informationen zur gpuweb-Standardisierung und die Chrome-Web-API-Dokumentation.
    • Wenn ich meinen Eindruck unbedingt aussprechen soll: Dass die Branche statt klarer Open Solutions auf kommerzielle Ansätze setzt, liegt offensichtlich am Profit. Das zeigt schon die Geschichte zahlreicher Innovationen wie etwa der blauen LED. Wenn AI die Last für Entwickler etwas verringert, könnten wir diesen klaren Weg vielleicht wieder stärker erkunden. Tatsächlich verlangt jede technologische Innovation Entwicklern mehr Last und steilere Lernkurven ab, während die Vergütung (Einstiegsgehälter) real stagniert. Wenn sich AI-Pair-Programming verbreitet, könnte das am Ende sogar die Codequalität verschlechtern und komplexere Codebasen hervorbringen.
    • Deshalb ziehen mich alternative Ansätze an. Abstraktionen, die man in Python umständlich ausschreibt, kann man in Octave in einer Zeile ausdrücken. Wenn man es noch knapper möchte, muss man zu funktionalen Assemblersprachen wie LISP gehen, gibt dafür aber wiederum den syntaktischen Komfort von Array-Sprachen auf.
    • Der Kernpunkt ist, dass der direkte Weg zu AI im Stil von J.A.R.V.I.S./Star Trek meiner Meinung nach über Business-Logik-Werkzeuge wie DSLs à la Octave/MATLAB sowie die in den 1980ern verwendeten Spreadsheets, HyperCard, Microsoft Access und FileMaker führt. Wenn ein offenes, GPU-beschleunigtes Octave-ähnliches Werkzeug auftaucht, würde das die Effizienz beim Schreiben von Software erhöhen und vielleicht auch direkt zur Weiterentwicklung von AI beitragen.