Cloudflare Workers 支持 Fortran 通过 WebAssembly 编译
Cloudflare 最近展示了如何通过将 Fortran 编译为 WebAssembly (Wasm) 在 Cloudflare Workers 上运行 Fortran 代码。该项目利用了 LLVM Flang 的最新进展,使得 Fortran 能够编译为 Wasm。
背景与动机
Cloudflare Workers 使用 V8 引擎并原生支持 Wasm,因此平台支持任何可以编译为 Wasm 的语言。Cloudflare 的 CTO John Graham-Cumming 和软件工程师 Sven Sauleau 解释了 Fortran 在数值编程或处理科学数据的团队中仍然具有相关性的原因。他们指出,全球最快的超级计算机的性能评估通常基于运行 LINPACK 软件,而 LINPACK 最初是用 Fortran 编写的。
LLVM Flang 的进展
今年早些时候,Posit PBC 的 webR 项目负责人 George Stagg 详细介绍了如何通过修改 LLVM Flang 以生成 WebAssembly 对象。LLVM Flang 是 pgfortran 的开源版本,旨在替代 Classic Flang,并作为 LLVM 的 Fortran 前端重新实现。Stagg 指出,虽然 Flang 尚未准备好用于生产环境,但其开发非常活跃,预生产版本的 flang-new 编译器已经可用,并且能够编译实际应用中的 Fortran 代码。
集成 WebAssembly 后端
利用 LLVM 的模块化设计,可以将 Flang 前端与 LLVM 的 WebAssembly 后端集成。尽管目前 LLVM Flang 无法直接生成 WebAssembly 输出,但由于 flang-new 前端的快速发展,只需对 LLVM 源代码进行少量修改即可创建 Fortran 到 WebAssembly 的编译器。
Hacker News 上的讨论
Stagg 的文章在 Hacker News 上引发了讨论,许多用户希望 Flang 能够集成这些更改,并将 WebAssembly 编译器作为标准功能提供。Winston Chang 评论称,这将是一个双赢的局面,因为这些补丁不需要单独维护,并且未修改的 Flang 能够编译到 Wasm,这将使其他使用 Fortran 的项目受益。
Cloudflare 的工具与演示
为了简化在 Cloudflare Workers 上运行 Fortran 代码的过程,Cloudflare 团队发布了 Fortiche,这是一个利用 Flang 和 Emscripten 编译器工具链的 Fortran 编译器。此外,Graham-Cumming 和 Sauleau 还介绍了一个用于数字识别的演示项目:用户在浏览器中绘制数字,Fortran 代码在 Cloudflare 的网络上运行并识别该数字。
其他语言的兼容性
这并不是 Cloudflare 第一次展示 Cloudflare Workers 支持旧语言的能力。此前,Graham-Cumming 展示了如何通过 GnuCOBOL 将 COBOL 编译为 C,再通过 Emscripten 将 C/C++ 编译为 WebAssembly,从而在 Cloudflare Workers 上运行 COBOL 代码。
支持的其他语言
除了任何可以编译为 WebAssembly 的语言外,Cloudflare Workers 平台目前还原生支持 JavaScript、TypeScript、Python 和 Rust。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用。你还可以使用@来通知其他用户。