Hacker News 中文摘要

RSS订阅

GNU Octave 与 JupyterLite 相遇:随时随地计算 -- GNU Octave Meets JupyterLite: Compute Anywhere, Anytime

文章摘要

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中添加一个配方即可。

点击此处试用Xeus-Octave!

未来计划

团队计划通过将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用户现在可以享受更灵活的云端计算体验!

评论总结

以下是评论内容的总结:

  1. 对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"
  1. 对技术发展路径的批评
  • 认为行业常忽视显而易见的开源解决方案
  • 指出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"
  1. 对Octave的基本介绍
  • 说明Octave是MATLAB的开源替代品 关键引用: "it's an open source near-clone of the proprietary MATLAB"
  1. 对项目展示方式的建议
  • 建议将图表和未来功能放在更显眼位置 关键引用: "Should the diagram be up front and possibly the next release features"
  1. 对JupyterLite的说明
  • 解释JupyterLite是完全在浏览器中运行的Jupyter版本 关键引用: "it's like Jupyter Notebook/Lab, but it runs completely in your browser"

总结呈现了从技术讨论到项目反馈的多角度观点,涵盖了Octave的技术特性、行业发展趋势的批评、基本概念说明以及对具体项目的建议。