Subleq单指令集计算机催生永恒软件计划
速览
一项名为Eternal Software Initiative的计划提出,基于Subleq单指令集计算机架构,旨在创建可持久运行的软件系统。该架构仅用一条指令实现完整计算,有望简化软件验证并提升长期稳定性。这为计算理论研究和可靠系统设计提供了新思路。
AI 深度解读
背景
现代软件的运行依赖于层层叠加的复杂基础设施:编译器、运行时库、操作系统,以及通常只披露部分规格的专用硬件。这套堆栈在数十年间不断演变,使得任何依赖特定平台组合的软件都面临“位腐烂”(bit rot)的威胁——随着硬件淘汰、操作系统更新、依赖库版本变更,旧的二进制文件将逐渐无法执行。即便今天我们能通过模拟器(如 QEMU)暂时延缓这一过程,但模拟器本身同样拥有复杂的软件和硬件依赖,其未来可运行性亦无法保证。
设想一千年后的历史学家试图理解 21 世纪的生活,而大量生活经验都封装在软件之中。即使当时的二进制文件被完好保存,也难以想象它们还能在未来的环境中运行。正是为了解决这一跨世纪的数字保存难题,Eternal Software Initiative(ESI)应运而生。
核心内容
Eternal Software Initiative 定义了一种极简机器架构,该架构基于 Subleq 单指令集计算机(One-Instruction-Set Computer,OISC)的改进版本。其完整规格简单到足以写在餐巾纸上,但功能足够强大,可以高效地表示任意软件。ESI 还提供了一套完整的工具链,能够将现有软件编译成一个自包含的“胶囊”(capsule),这颗胶囊不依赖于任何现代的硬件、软件或框架知识,只需保留胶囊二进制文件与那张餐巾纸规格,未来的人就能恢复并运行其中的软件。
该项目在 GitHub 上开源(仓库地址:https://github.com/adriancable/eternal),包含了构建和运行 ESI 机器所需的所有资源,以及将现有软件编译为 ESI 胶囊的工具。仓库以子模块方式引入了对 LLVM 工具链、Linux 内核、uClibc-ng 和 Busybox 的 ESI 分支。克隆时需使用 git clone --recurse-submodules 同时拉取所有子模块。
构建 ESI 虚拟机需要 SDL3(用于像素显示和键盘事件捕获),可通过 apt install libsdl3-dev 安装。此后依次执行 cd eternal/vm && make 即可编译出虚拟机。解压预置的 Linux 内核映像 (xz -d ../capsules/vmlinux.bootimage.xz),然后运行 ./vm ../capsules/vmlinux.bootimage 即可启动一个 ESI Linux 环境。在其中可以测试像 Doom 这样的游戏:cd doom && ./doom。
ESI 工具链可在任何 Linux 系统上通过最小努力构建(macOS 上也可成功,但需稍作修改)。构建步骤包括编译 LLVM 的 Subleq 后端、为 Subleq 架构配置和编译 Linux 内核、编译 uClibc-ng 运行时库、编译 Busybox 并打包初始 RAM 文件系统等。具体命令行已在原仓库 README 中详细给出。构建完成后可以通过 make_boot_image.py 脚本生成自启动映像,并使用虚拟机运行。
对于希望快速交叉编译用户空间程序的开发者,ESI 提供了 clang_userspace.sh 脚本,只需编写一个简单的 hello.c 文件,运行 tools/clang_userspace.sh hello.c 即可得到 .elf 二进制。将该文件放入 initramfs 后重新构建内核映像并启动虚拟机,即可在 ESI Linux 中执行 ./hello.elf。
ESI 虚拟机有一个极简版本(仅 366 字节 C 代码),曾在第 29 届 IOCCC(国际混乱 C 代码大赛)中获奖。
关键要点
- 极简架构:基于 Subleq OISC 的改进版本,完整规范可记录在餐巾纸上,不依赖任何专有硬件、软件或框架知识。
- 自包含胶囊:通过 ESI 工具链,将任何现有软件(包括操作系统)编译成一个自包含的二进制“胶囊”。未来只需胶囊文件和规格说明即可重新运行。
- 完整工具链:提供了 LLVM 编译器后端、Linux 内核移植、C/C++ 运行时库(uClibc-ng、libcxx)、Busybox 以及参考虚拟机的实现。
- 可立即运行:预先生成的 Linux 内核胶囊可直接在 ESI 虚拟机上启动,并运行 Doom 等现有软件。
- 跨平台构建:工具链主要面向 Linux,但 macOS 上经过修改也可构建;构建时仅依赖 gcc、python3、CMake、ninja、flex、bison 以及 SDL3(用于虚拟机显示)。
- 极简虚拟机:参考实现在约 50 行 C 代码中完成核心模拟功能;获奖的迷你版本仅 366 字节。
- 无需未来知识:对于一千年后的人,复活胶囊只需胶囊本身和写在餐巾纸上的架构说明,不需要了解任何当今的计算系统。
意义与影响
Eternal Software Initiative 从根本上重新定义了软件长期保存的路径。它不依赖模拟器或向后兼容的硬件,而是通过定义一套极简、可完整记录且人类可直接理解的机器架构,使得任何软件都能被转换为一种在未来几乎可以无条件执行的形式。这为数字考古、历史研究、文化遗产保护等领域提供了切实可行的技术方案。
该项目的思路与“数字文艺复兴”运动一脉相承,旨在让未来世代能够直接体验今天软件所承载的人类文化、艺术和科学活动。ESI 也展示了“少即是多”的工程哲学:放弃对复杂硬件的依赖,拥抱极简但足够表达一切的底层抽象,从而将知识壁垒降到最低。其虚拟机的极简实现(366 字节的 C 代码)本身就是一种可长期保存的“种子”——即使未来 C 语言不再流行,这段简短代码也极易被人工翻译或重写。
长远来看,ESI 有望成为数字档案领域的基础设施之一,与 PDF/A、SIARD 等长期保存标准形成互补,专注于可执行软件生态的保存。它的成功将依赖于社区对胶囊格式的认可、工具链的持续维护,以及更多软件被成功“胶囊化”的示范案例。
