- Xeus-Octave rejoint désormais l’écosystème des noyaux JupyterLite, rendant possible l’exécution directe de code GNU Octave dans le navigateur
- GNU Octave est un langage open source de calcul scientifique compatible avec Matlab, et ce projet l’a porté vers un environnement WebAssembly (WASM)
- Pour résoudre les problèmes liés au code basé sur Fortran et aux dépendances BLAS/LAPACK, un toolchain personnalisé combinant LLVM Flang, Emscripten et Netlib LAPACK a été utilisé
- Comme LLVM ne prend pas encore en charge les symboles communs Fortran (Common Block), le problème a été provisoirement résolu par un patch temporaire, avec une prise en charge officielle prévue dans LLVM 22
- JupyterLite étend ainsi sa prise en charge de R à Octave, marquant une étape importante dans l’extension de l’écosystème de programmation scientifique basé sur le navigateur
Présentation de Xeus-Octave et du portage vers WebAssembly
- Xeus-Octave est un noyau Jupyter permettant d’exécuter du code GNU Octave dans le navigateur, empaqueté via emscripten-forge
- GNU Octave est un langage gratuit et open source capable d’exécuter directement des scripts Matlab
- Grâce à cette intégration, il peut désormais être utilisé immédiatement dans JupyterLite sans installation séparée
- À l’image de Xeus-R-Lite développé précédemment, le projet s’appuie sur un toolchain de compilation de code Fortran (LLVM Flang + Emscripten)
- Pour les bibliothèques de dépendances utilisées dans les calculs mathématiques d’Octave, Netlib LAPACK a été choisi à la place d’OpenBLAS, afin d’améliorer la compatibilité de build
Défis techniques du processus de build WebAssembly
- Des erreurs de build sont apparues dans LLVM en raison du problème de prise en charge des blocs communs Fortran (Common Symbol Block)
- Le streamer Wasm de LLVM v20 n’implémente pas les symboles communs, ce qui a nécessité des modifications du code
- Grâce à une collaboration entre l’équipe QuantStack et Serge Guelton, LLVM a reçu un patch temporaire pour les traiter comme des symboles faibles (weak symbols)
- La prise en charge officielle devrait être incluse dans la sortie de LLVM v22, et la version corrigée de LLVM est actuellement publiée pour Linux
- Octave lui-même a également été adapté à la cible WASM, avec notamment la désactivation des fonctions GUI et l’unification des signatures de fonctions Fortran
Intégration et démonstration de Xeus-Octave
- Une fois le build terminé, l’exécution de Xeus-Octave dans JupyterLite devient possible en ajoutant simplement une recette emscripten-forge
- Une démonstration de tracé en temps réel est disponible dans le notebook de démo
- Xeus-Octave est construit sur Xeus, un framework de noyau Jupyter basé sur C++, ce qui permet d’exécuter et de visualiser des commandes Octave directement dans le navigateur
Prochaines étapes
- La prochaine étape consiste à intégrer l’écosystème de paquets Octave à conda-forge et emscripten-forge
- L’utilitaire
pkg d’Octave sera adapté à l’environnement navigateur afin de définir un processus d’installation dans un environnement conda
- Cela devrait encore renforcer l’environnement de programmation scientifique et mathématique basé sur le navigateur
Principaux contributeurs et contexte
- La développeuse principale Isabel Paredes, de QuantStack, avait auparavant travaillé sur le portage vers WebAssembly du langage R et du framework ROS
- Emscripten-forge est piloté par Thorsten Beier, avec la participation de plusieurs contributeurs, dont Anutosh Bhat et Martin Renou
- JupyterLite est maintenu principalement par Jeremy Tuloup, et Xeus autour de Johan Mabille
- Xeus-Octave a été développé par Giulio Girardi et Antoine Prouvost
1 commentaires
Avis Hacker News