文章摘要
GNU Octave现在可以与JupyterLite结合,在浏览器中直接运行,无需安装即可实现跨平台计算。这一集成让用户能够随时随地访问Octave的计算功能,大大提升了科学计算的便捷性和可及性。
文章总结
GNU Octave与JupyterLite相遇:随时随地计算!
我们很高兴地宣布,Xeus-Octave成为JupyterLite内核生态系统的最新成员。Xeus-Octave允许用户直接在浏览器中运行GNU Octave代码。GNU Octave是一种免费开源的科学编程语言,可用于运行Matlab脚本。本文将介绍在针对WebAssembly时遇到的挑战、Xeus-Octave内核的当前状态以及扩展GNU Octave生态系统的未来计划。
跨编译GNU Octave的挑战
今年早些时候,我们推出了JupyterLite的R内核Xeus-R-Lite。与R类似,将GNU Octave跨编译到WebAssembly需要相同的自定义工具链,以支持Fortran代码的编译,结合了LLVM Flang和Emscripten。
GNU Octave需要BLAS/LAPACK实现。幸运的是,OpenBLAS和Netlib的BLAS/LAPACK实现已被添加到emscripten-forge的WebAssembly分发中。最初OpenBLAS是首选实现,但为了成功编译Octave,最终选择了Netlib LAPACK,因为它在构建过程中遇到的障碍较少。
技术难点
跨编译Octave到WebAssembly的一个复杂问题是其内部库(如odepack)广泛使用了Fortran的公共符号块(common symbols blocks)。由于LLVM(测试时为v20版本)不支持公共符号链接,因此无法直接跨编译这些公共块。作为临时解决方案,在Serge Guelton的帮助下,LLVM被修补为将公共符号模拟为弱符号。完整的解决方案预计将在LLVM v22中发布。
此外,GNU Octave还需要一些针对WebAssembly的修改,包括禁用GUI功能以及统一Fortran函数签名和调用约定。完整的补丁列表可在emscripten-forge的配方目录中找到。
Xeus-Octave的集成
成功将GNU Octave打包为WebAssembly后,将Xeus-Octave集成到JupyterLite只需在emscripten-forge中添加一个配方即可。
未来计划
团队计划通过将Octave软件包添加到conda-forge和emscripten-forge来扩展生态系统。这项工作需要定义一种流程,使Octave软件包能够安装到预定的conda环境中,可能需要对现有的pkg工具进行一些修改。
关于作者
Isabel Paredes是QuantStack的高级科学软件开发人员,负责将GNU Octave引入emscripten-forge。在此之前,她专注于将R编程语言和机器人操作系统(ROS)框架移植到WebAssembly。
致谢
该项目汇集了许多开源贡献者的工作,包括: - Emscripten-forge:由Thorsten Beier创建并领导的项目。 - JupyterLite:由Jeremy Tuloup创建的完全在浏览器中运行的Jupyter发行版。 - Xeus:由Johan Mabille创建的C++库,实现了Jupyter内核协议。 - Xeus-Octave:由Giulio Girardi和Antoine Prouvost创建的基于Xeus的GNU Octave内核。
通过这一创新,GNU Octave用户现在可以享受更灵活的云端计算体验!
评论总结
以下是评论内容的总结:
- 对Octave的积极评价与期待
- 支持将GNU Octave转译为其他语言的想法
- 提到Octave可作为C库嵌入,并提供GPU加速方案 关键引用: "This is great! I always wanted a GNU Octave transpiled to other languages." "Octave could be embedded as a C library for some time"
- 对技术发展路径的批评
- 认为行业常忽视显而易见的开源解决方案
- 指出AI可能带来工作负担增加和代码质量下降的风险 关键引用: "It's always astonishing to me how the obvious path is rarely taken by industry" "With AI bringing pair programming everywhere, we may see a decline in overall code quality"
- 对Octave的基本介绍
- 说明Octave是MATLAB的开源替代品 关键引用: "it's an open source near-clone of the proprietary MATLAB"
- 对项目展示方式的建议
- 建议将图表和未来功能放在更显眼位置 关键引用: "Should the diagram be up front and possibly the next release features"
- 对JupyterLite的说明
- 解释JupyterLite是完全在浏览器中运行的Jupyter版本 关键引用: "it's like Jupyter Notebook/Lab, but it runs completely in your browser"
总结呈现了从技术讨论到项目反馈的多角度观点,涵盖了Octave的技术特性、行业发展趋势的批评、基本概念说明以及对具体项目的建议。