Wanix — 基于Wasm的Unix沙箱工具,适用于Web

Lobsters Hottest 工具

摘要

Wanix是一款Wasm原生的Unix沙箱工具,让你在浏览器中完全使用Web组件运行并与真实的Wasm和x86程序交互,灵感来自Plan 9。

<p><a href="https://lobste.rs/s/urhpbn/wanix_wasm_native_unix_sandboxing_for_web">评论</a></p>
查看原文
查看缓存全文

缓存时间: 2026/07/24 04:59

# Wanix — 面向Web的Wasm原生Unix沙盒 来源:https://wanix.dev/ 新版Wanix 0.4 — wanix元素 (https://github.com/tractordev/wanix/releases) 在浏览器中完全沙盒化地运行和交互真实的Wasm与x86程序。无需服务器。灵感来自[Plan 9](https://en.wikipedia.org/wiki/Plan_9_from_Bell_Labs)。 ``` rc% ls rc.wasm rc% ``` 三个标签加上我们受Plan 9启发的shell rc,就能得到一个微小的、嵌入式、Wasm原生的类Unix环境。 wanix recipes ## 使用Wanix Elements的基本起点 分配一个新的`#ramfs`到命名空间根目录,绑定rc shell和一个内联文件,然后使用终端运行shell任务。尝试运行: - `ls` - `cat shell.txt` wanix elements ## 仅需几个标签即可为Web引导一个Unix ### 核心 — 构建块正交原语 `<wanix-task>`:在命名空间中运行可执行文件 [文档](https://github.com/tractordev/wanix#wanix-task) 将Wasm二进制绑定到命名空间,然后启动它。`cmd`是命令行;`start`在系统就绪后立即无头运行。 内联一个JS文件并将其作为任务运行。Wanix支持可插拔执行的任务驱动,内置JS和Wasm驱动。 `<wanix-term>`:任务的xterm.js终端或VM [文档](https://github.com/tractordev/wanix#wanix-term) 通常任务通过自动连接的终端分配启动。通常用作任务的顶级元素。类似的可视化元素可以在命名空间外用于样式灵活性,它们只需要显式的`for`和`path`属性来连接到Wanix终端。 `<wanix-vm>`:在命名空间中运行虚拟机,由v86驱动 [文档](https://github.com/tractordev/wanix#wanix-vm) 通过绑定v86模拟器资源和Linux系统镜像来启动无头Linux虚拟机。它将检测Linux内核并启动到shell。这更常见于分配和连接终端的情况,但对于VM控制台,终端需要处于`raw`模式。如果镜像支持,可以使用`export="ttyS0"`在`#vm/1/guest`导出内部命名空间。 `<wanix-system>`:显式的命名空间容器 [文档](https://github.com/tractordev/wanix#wanix-system) 使用`<wanix-system>`显式创建命名空间。使用任何其他标签作为顶级元素将隐式创建命名空间。为命名空间指定`id`和`allow-origins`,以便其他页面可以使用导入绑定导入此命名空间。 `<wanix-bind>`:将文件、归档和其他命名空间绑定挂载到命名空间 [文档](https://github.com/tractordev/wanix#wanix-bind) Bind可以链接名称、分配设备,或使用`type="file"`获取或内联文件。Bind是构建命名空间的通用原语。使用`type="archive"`可以将`.tar`/`.tgz`解压到目录树中。将多个归档或目录绑定到同一`dst`以创建递归联合。使用`type="import"`可以通过WebSocket上的9P或作为嵌入式iframe导入远程命名空间。 ### 扩展 — 较大的组件需要额外资源 `<wanix-workbench>`:嵌入VS Code工作台作为编辑器、文件浏览器、完整IDE或应用外壳 [文档](https://github.com/tractordev/wanix#wanix-workbench) 嵌入由Wanix命名空间支持的VS Code工作台。需要`assets`属性。需要提供一个带`role="shell"`的任务以启用终端。使用`open`和`sidebar`等属性可以控制工作台的初始状态。这里我们将IDE简化为一个单文件编辑器。未来,您将能够向工作台添加自定义扩展和视图,甚至在工作台内实时编辑它们。 script标签 ## 将Wanix添加到任何页面 您可以从[最新发布](https://github.com/tractordev/wanix/releases)获取资源,或直接使用CDN: `` `` wanix背后的理念 https://www.youtube.com/watch?v=kGBeT8lwbo0 19分钟完整故事 ## Plan 9的精神,在Wasm中 每个进程的命名空间、一切皆文件,以及为什么90年代的研究型操作系统最终成为本地优先Web的正确模型。 ▷ [观看演讲](https://www.youtube.com/watch?v=kGBeT8lwbo0)

相似文章

Wterm – 面向网页的终端模拟器

Hacker News Top

Wterm 是一款面向网页的终端模拟器,使用 Zig 构建并编译为 WASM,以实现接近原生的性能,同时具备原生文本选择、复制/粘贴、查找和无障碍功能。

使用MicroPython和WASM在沙盒中运行Python代码

Simon Willison's Blog

Simon Willison介绍了micropython-wasm,一个alpha版本包,它使用编译为WebAssembly的MicroPython在沙盒中运行Python代码,从而在Datasette等Python应用中实现安全的插件执行。

weblings:在 WASM 内部将 Rust 编译为 WASM

Lobsters Hottest

Weblings 是一个编译为 WebAssembly 的 Rust 编译器工具链,通过带有 playground 和 Rustlings 练习的网页 UI,支持在浏览器中直接编译和执行 Rust 代码。