- Xeus-Octave acaba de se juntar ao ecossistema de kernels do JupyterLite, permitindo executar código GNU Octave diretamente no navegador
- GNU Octave é uma linguagem open source de computação científica compatível com Matlab, e este projeto fez sua adaptação para rodar em ambiente WebAssembly (WASM)
- Para resolver problemas com código baseado em Fortran e dependências de BLAS/LAPACK, foi usado um toolchain customizado que combina LLVM Flang, Emscripten e Netlib LAPACK
- Como o LLVM ainda não oferece suporte a símbolos comuns de Fortran (Common Block), o problema foi resolvido temporariamente com um patch provisório, com suporte oficial previsto para o LLVM 22
- Com isso, o suporte do JupyterLite se expande do R para o Octave, marcando um passo importante na expansão do ecossistema de programação científica baseado em navegador
Visão geral do porte do Xeus-Octave para WebAssembly
- Xeus-Octave é um kernel Jupyter que permite executar código GNU Octave no navegador, empacotado via emscripten-forge
- GNU Octave é uma linguagem gratuita e open source capaz de executar scripts Matlab diretamente
- Com esta integração, ele pode ser usado imediatamente no ambiente JupyterLite sem instalação separada
- Assim como o Xeus-R-Lite desenvolvido anteriormente, ele usa um toolchain para compilar código Fortran (LLVM Flang + Emscripten)
- Como biblioteca de dependência para operações matemáticas do Octave, foi escolhido o Netlib LAPACK em vez do OpenBLAS, melhorando a compatibilidade de build
Desafios técnicos no processo de build para WebAssembly
- Ocorreu erro de build no LLVM devido ao problema de suporte a blocos comuns de Fortran (Common Symbol Block)
- O streamer Wasm do LLVM v20 não implementa símbolos comuns, o que exigiu modificações no código
- Em colaboração entre a equipe da QuantStack e Serge Guelton, o LLVM recebeu um patch provisório para tratar isso como símbolo fraco (
weak symbol)
- O suporte oficial deve ser incluído no lançamento do LLVM v22, e a versão atual do LLVM com patch foi publicada para Linux
- O próprio Octave também recebeu ajustes para o alvo WASM, como desativação de recursos de GUI e unificação de assinaturas de funções Fortran
Integração e demonstração do Xeus-Octave
- Após a conclusão do build, basta adicionar a receita do emscripten-forge para executar o Xeus-Octave no JupyterLite
- O Xeus-Octave foi construído sobre o Xeus, framework de kernel Jupyter baseado em C++, permitindo executar comandos Octave e visualizá-los no navegador
Próximos passos
- Como etapa seguinte, há planos de integrar o ecossistema de pacotes do Octave ao conda-forge e ao emscripten-forge
- A utilidade
pkg do Octave será ajustada para o ambiente de navegador, com a definição planejada do processo de instalação dentro de um ambiente conda
- Com isso, o ambiente de programação científica e matemática baseado em navegador deve ficar ainda mais robusto
Principais contribuidores e contexto
- A desenvolvedora líder Isabel Paredes, da QuantStack, já havia trabalhado anteriormente no porte para WebAssembly da linguagem R e do framework ROS
- O Emscripten-forge é liderado por Thorsten Beier, com participação de vários contribuidores (Anutosh Bhat, Martin Renou e outros)
- O JupyterLite é mantido principalmente por Jeremy Tuloup, e o Xeus por Johan Mabille
- O Xeus-Octave foi desenvolvido por Giulio Girardi e Antoine Prouvost
1 comentários
Comentários do Hacker News