Woxi 0.3 在开源 Rust 引擎上运行 Mathematica 笔记本

Adrian Sieber 的 Wolfram Language 解释器增加了 Windows 构建、在浏览器中执行和一个原生笔记本编辑器,但仍存在重大不足。

By · Published

Primary source: Woxi

Why it matters

Woxi is testing whether Wolfram Language code can become portable infrastructure. Browser and embedded runtimes matter only if compatibility survives real notebooks, graphics and symbolic workloads.

Illustration of Woxi 0.3 running Mathematica notebooks on an open-source Rust Wolfram Language interpreter, showing code and live mathematical output.

Adrian Sieber (@AdrianSieber) 于 8 月 6 日发布了 Woxi 0.3.0,将他对 Wolfram Language 的开源重新实现的重点从积累函数转向执行完整的 Mathematica 笔记本。此次发布使其原生编辑器 Woxi Studio 能够端到端打开并运行一系列交互式 Wolfram Demonstrations,同时在 Linux 和 macOS 构建之外新增了预构建的 Windows 二进制文件。(github.com)

Sieber 是一位常驻法兰克福的软件开发者,也是 Airsequel 的 CEO,Airsequel 是一个托管的 SQLite 服务,可生成 GraphQL API、电子表格界面和其他数据库工具。他的个人项目历史 包括一个命令行任务管理器、一个纯文本记账工具以及他在 2017 年共同创立的代码分析服务 Feram。Woxi 将这一模式扩展到了一个更大的目标:为自 1988 年以来开发的专有语言实现一个兼容的、独立实现的引擎。(github.com)

Sieber 的押注集中在分发上。Woxi repository 将解释器打包为命令行工具、Jupyter kernel、Python package、npm package 和 WebAssembly 模块。因此,相同的 Rust 引擎可以在 shell 脚本、笔记本、Python 进程、Node 应用或浏览器中运行。根据其文档,Woxi 的浏览器 playground 在本地执行,不会将计算发送到远程服务器。(woxi.ad-si.com)

Python package 在 8 月 7 日达到了 0.3.0 版本,提供了适用于 Windows、macOS 和 Linux 的预构建 wheel。它通过 Python 调用暴露符号求值、持久会话状态和 SVG 图形。Woxi 采用 AGPL-3.0-or-later 许可,这一选择使已部署版本的修改受该许可的源代码共享要求约束。(pypi.org)

从函数计数到笔记本兼容性

Version 0.3.0 集中于开发者在打开真实 .nb 文件时遇到的行为。Woxi Studio 能够重建存储的 Manipulate 小部件,将排版的笔记本输入解释为可执行代码,并呈现包括定位器、按钮、菜单和动画在内的交互式控件。Sieber 使用覆盖开普勒第二定律、抛物面镜、Doyle 螺旋和阻尼摆的演示作为端到端 测试。(github.com)

图形工作超越了基本绘图。该版本新增或修正了误差条、填充、绘图标记、三维曲面、多边形空洞、SVG 字体嵌入和 Wolfram 风格的自动刻度。其微积分和代数新增项包括更多的符号积分、微分方程情形、带约束的优化和方程求解。发布说明称,多轮针对 wolframscript 的差分模糊测试暴露了算术、表达式排序和化简方面的隐蔽差异。那些比较对 Woxi 的方法至关重要,因为当求值或输出与现有 Wolfram 代码不一致时,熟悉的函数名价值有限。(github.com)

Woxi 还做出了一些有意的偏离。其与 Mathematica 的比较 指出,命令行程序可以直接评估来自 .nb 笔记本的输入单元,这是 WolframScript 所不支持的。Woxi Studio 会自动执行前面的单元,而不是允许任意的乱序求值,这是为了防止笔记本结果依赖于隐藏的 kernel 状态。该编辑器还省略了 Mathematica 中表示上一个结果的 % 简写。(woxi.ad-si.com)

兼容性差距仍然很大

与 Mathematica 的比较也同时划定了当前产品的边界。Woxi 的文档将 Wolfram Knowledgebase、机器学习、神经网络、有限元方法、化学、视频计算、信号处理以及其他若干领域列为大多未实现。Mathematica 15.0 中添加的功能,包括 GPU kernels、WebSocket 连接、重建的时间序列引擎和 Wolfram 的 agent 工具,也仍然不在 Woxi 的覆盖范围内。(woxi.ad-si.com)

该项目称其完全支持 Mathematica 1.0 原始的 554 个内置函数和符号核心。这个历史基线很有用,但当前的 Mathematica 涵盖了数十年积累的领域库、数据系统和笔记本行为。Woxi 的实际考验在于它是否能够足够好地支持一小部分可复现的脚本和笔记本,使开发者能够在不运行 Wolfram kernel 的情况下嵌入它们。(woxi.ad-si.com)

Woxi 也正在进入一个已建立的开源努力,而不是创造第一个替代的 Wolfram 引擎。Mathics3,一个其开发历史可追溯到 2011 年的 Python 实现,自称为一个开源的 Mathematica kernel,拥有大约 1,200 个 GitHub star。Woxi 在 8 月 12 日左右约有 750 个 star。Sieber 的差异化在于 Rust、可移植二进制、WebAssembly 嵌入以及一个跨命令行、浏览器和原生笔记本编辑器的单一引擎。(github.com)

0.3.0 版本为该策略提供了一个具体的试验场。完整的笔记本会暴露出孤立函数测试无法发现的不兼容:求值顺序、排版、交互状态、图形布局和错误行为都必须足够一致,现有工作才能运行。Woxi 已开始以这一更严格的标准进行测试,同时其自身的兼容性表也明确指出了还有多少 Mathematica 功能尚不可及。

Reader comments

Conversation for this story loads after sign-in.