- Xeus-Octave が新たに JupyterLite カーネルのエコシステムに加わり、ブラウザ上でそのまま GNU Octave コードを実行できるようになった
- GNU Octave は Matlab 互換のオープンソース科学計算言語であり、今回のプロジェクトではこれを WebAssembly(WASM) 環境で動作するよう移植した
- Fortran ベースのコードと BLAS/LAPACK 依存関係の問題を解決するため、LLVM Flang、Emscripten、Netlib LAPACK を組み合わせたカスタムツールチェーンを使用
- LLVM が Fortran の共通シンボル(Common Block) をまだサポートしていないため、簡易パッチで一時的に対応し、今後 LLVM 22 で正式サポート予定
- これにより JupyterLite で R に続いて Octave までサポートが拡張され、ブラウザベースの科学プログラミングエコシステム拡大に向けた重要な一歩が整った
Xeus-Octave と WebAssembly 移植の概要
- Xeus-Octave は ブラウザ上で GNU Octave コードを実行できる Jupyter カーネルで、emscripten-forge を通じてパッケージ化されている
- GNU Octave は Matlab スクリプトを直接実行できる 無料・オープンソース言語
- 今回の統合により、別途インストールなしで JupyterLite 環境ですぐに利用可能
- 以前に開発された Xeus-R-Lite と同様の方式で、Fortran コードコンパイル用ツールチェーン(LLVM Flang + Emscripten) を利用
- Octave の数学演算向け依存ライブラリとして OpenBLAS の代わりに Netlib LAPACK を選択し、ビルド互換性を向上
WebAssembly ビルド過程における技術的課題
- Fortran 共通ブロック(Common Symbol Block) のサポート問題により LLVM でビルドエラーが発生
- LLVM v20 の Wasm ストリーマーが共通シンボルを実装しておらず、コード修正が必要だった
- QuantStack チームと Serge Guelton の協業により LLVM に 簡易パッチを適用し、弱いシンボル(weak symbol)として処理
- 正式サポートは LLVM v22 リリースに含まれる予定で、現在パッチ適用済みの LLVM バージョンは Linux 向けに公開されている
- Octave 自体も WASM 向けに GUI 機能の無効化やFortran 関数シグネチャの統合などの修正が行われた
Xeus-Octave 統合とデモ
- ビルド完了後は、emscripten-forge レシピを追加するだけで JupyterLite で Xeus-Octave を実行可能
- Xeus-Octave は C++ ベースの Jupyter カーネルフレームワーク Xeus 上に構築されており、ブラウザ上で Octave コマンドを実行して可視化できる
今後の計画
- 次のステップとして、Octave パッケージエコシステムを conda-forge および emscripten-forge に統合する計画
- Octave の
pkg ユーティリティをブラウザ環境向けに調整し、conda 環境内でのインストールプロセスを定義する予定
- これにより、ブラウザベースの 科学・数学向けプログラミング環境がさらに強化される見込み
主な貢献者と背景
- 主導開発者 Isabel Paredes は QuantStack 所属で、以前に R 言語と ROS フレームワークの WebAssembly 移植を担当
- Emscripten-forge は Thorsten Beier が主導し、複数の貢献者(Anutosh Bhat、Martin Renou など)が参加
- JupyterLite は Jeremy Tuloup が、Xeus は Johan Mabille を中心にメンテナンスされている
- Xeus-Octave は Giulio Girardi と Antoine Prouvost が開発
1件のコメント
Hacker Newsの意見