「内核搬进标签页」:Kandelo 给浏览器装上 POSIX 多进程

| | 1 次浏览

引言

浏览器先后吃下了办公软件、开发环境,如今开始觊觎更底层的领地,操作系统本身。最近在 Hacker News 上以 Show HN 发布的开源项目 Kandelo 是最新的例证:一个基于 WebAssembly 的多进程内核,能在浏览器和 Node.js 中运行 POSIX 兼容的程序。项目仍处于实验阶段,但它试图回答的问题相当硬核,当一切软件都能编译成 WASM,我们离「浏览器即操作系统」还有多远?

事件要点

根据作者的介绍,Kandelo 的核心特性可以归纳为三点:

  • POSIX 兼容的多进程内核:不同于单进程的 WASM 运行时,Kandelo 提供了进程抽象,让传统 Unix 程序的运行模型得以保留;
  • 跨环境运行:同一套内核既能在浏览器标签页里跑,也能在 Node.js 中跑,目标不是演示玩具,而是通用地执行现有软件;
  • 已有实际落点:作者表示已经用它运行了相当数量的现有程序,并且正在尝试将 Kandelo 作为 WordPress Playground 的新基础,同时认为它在沙箱场景上很有前景,公开向社区征集用例。

其中最值得展开的是 WordPress Playground 这条线。

背景:从「跑一个程序」到「跑一个系统」

把服务器软件搬进浏览器,WordPress Playground 已经证明了可行:它把 PHP 编译为 WASM、数据库换成 SQLite,让一个完整的动态站点在浏览器本地运行,无需任何服务器。(playground.wordpress.net)

但这条路很快会撞到天花板:目前的方案本质上是「单进程翻译」。想模拟进程协作、隔离不可信插件、让一次崩溃不传染给整个运行时,都需要真正的多进程语义,而这恰恰是 fork/exec、进程隔离这些 Unix 的基本盘。

在浏览器里模拟操作系统也不算新事:Fabian Bellard 的 JSLinux、Fabian Hemmer 的 v86 用 x86 指令级模拟跑起完整 Linux;Leaning Technologies 的 WebVM/CheerpX 走的是二进制翻译路线;Container2wasm 则把 Docker 容器整体转成 WASM。这些方案的共同短板同样是进程模型,要么整机模拟、开销巨大,要么单进程、语义残缺。Kandelo 选择在内核层直接实现多进程,算是换了一个切入口。

影响与挑战

如果 Kandelo 跑通,受益的场景并不少:

  • 分发即部署:演示环境、教学沙盒、测试实例可以做到「点开链接即运行」,Docker 和服务器都不再是前置条件;
  • 安全隔离:WASM 天生是能力受限的沙箱,叠加进程级隔离后,运行不可信代码的粒度和可控性都会上一个台阶;
  • 离线与边缘:整套软件栈装进一个网页,弱网和本地优先的场景直接受益。

挑战也同样清晰:系统调用的覆盖广度、跨进程通信的性能损耗、网络栈与文件系统如何映射到浏览器 API、以及调试体验——每一个都是模拟内核绕不开的坑。作者自己也承认项目「仍在实验阶段」,这条路还没到宣告胜利的时候。

简短点评

浏览器正在成为「操作系统之上的操作系统」,而 Kandelo 的真正价值不在于今天能替代什么,而在于它把 Unix 的进程哲学,隔离、崩溃不传染、按需伸缩,带进了 WASM 世界。v86 和 WebVM 们已经证明浏览器能装下一个系统,多进程内核若能补上进程语义这块拼图,「把整个开发环境装进一条链接」就不再是发布会上的修辞,而是开发者桌上的日常。对这类项目,值得多一分耐心。

评论(0)

暂无评论,来写第一条吧。