- Xeus-Octave se incorpora al ecosistema de kernels de JupyterLite, lo que permite ejecutar código de GNU Octave directamente en el navegador
- GNU Octave es un lenguaje open source de cómputo científico compatible con Matlab, y este proyecto lo adapta para ejecutarse en un entorno WebAssembly (WASM)
- Para resolver problemas con código basado en Fortran y las dependencias de BLAS/LAPACK, se utilizó una cadena de herramientas personalizada que combina LLVM Flang, Emscripten y Netlib LAPACK
- Como LLVM todavía no soporta símbolos comunes de Fortran (Common Block), se aplicó una solución provisional con parches, con soporte oficial previsto para LLVM 22
- Con esto, JupyterLite amplía su soporte de R a Octave, marcando un paso importante en la expansión del ecosistema de programación científica basado en navegador
Resumen de Xeus-Octave y la adaptación a WebAssembly
- Xeus-Octave es un kernel de Jupyter que permite ejecutar código GNU Octave en el navegador, empaquetado mediante emscripten-forge
- GNU Octave es un lenguaje gratuito y de código abierto capaz de ejecutar directamente scripts de Matlab
- Con esta integración, puede usarse de inmediato en JupyterLite sin instalación adicional
- De forma similar al proyecto previo Xeus-R-Lite, utiliza una cadena de herramientas para compilar código Fortran (LLVM Flang + Emscripten)
- Como biblioteca de dependencias para operaciones matemáticas de Octave, se eligió Netlib LAPACK en lugar de OpenBLAS, mejorando la compatibilidad de compilación
Retos técnicos del proceso de compilación para WebAssembly
- Se produjeron errores de compilación en LLVM debido al problema de soporte para bloques comunes de Fortran (Common Symbol Block)
- El streamer Wasm de LLVM v20 no implementa símbolos comunes, por lo que fue necesario modificar el código
- Gracias a la colaboración entre el equipo de QuantStack y Serge Guelton, se aplicó un parche provisional a LLVM para tratarlos como símbolos débiles (
weak symbol)
- El soporte oficial se incluirá en el lanzamiento de LLVM v22, y la versión parcheada actual de LLVM está publicada para Linux
- Octave también recibió ajustes para el objetivo WASM, como la desactivación de funciones GUI y la unificación de firmas de funciones Fortran
Integración y demostración de Xeus-Octave
- Tras completar la compilación, basta con añadir la receta de emscripten-forge para ejecutar Xeus-Octave en JupyterLite
- Xeus-Octave está construido sobre Xeus, un framework de kernels de Jupyter basado en C++, lo que permite ejecutar y visualizar comandos de Octave en el navegador
Próximos pasos
- Como siguiente etapa, se planea integrar el ecosistema de paquetes de Octave en conda-forge y emscripten-forge
- Se prevé ajustar la utilidad
pkg de Octave para el entorno del navegador y así definir el proceso de instalación dentro de un entorno conda
- Esto fortalecerá aún más el entorno de programación científica y matemática basado en navegador
Principales contribuidores y contexto
- La desarrolladora principal Isabel Paredes, de QuantStack, estuvo antes a cargo de la adaptación a WebAssembly del lenguaje R y del framework ROS
- Emscripten-forge es liderado por Thorsten Beier, con la participación de varios contribuidores como Anutosh Bhat y Martin Renou
- JupyterLite es mantenido principalmente por Jeremy Tuloup, y Xeus por Johan Mabille
- Xeus-Octave fue desarrollado por Giulio Girardi y Antoine Prouvost
1 comentarios
Comentarios de Hacker News