加载失败
JSLinux 是 Fabrice Bellard 的浏览器内系统仿真项目,近期新增对 x86_64 的支持,意味着可以在浏览器里以 WebAssembly 运行更多现代 Linux 发行版。讨论基于这一发布延伸出几条线索:有人设想把它当作给 LLM/代码代理的本地沙箱,强调 Bash 与文件系统对 agent 功能的重要性;有人则集中在性能、ISA(x86 vs RISC‑V)、JIT/解释器与 WASM‑内核的技术权衡,并比较 container2wasm、v86、BrowserPod、WebVM、Apptron、devcontainers 等替代方案。评论还关注源码可见性、网络访问(如 websocket VPN、CORS、带宽限制)以及将该技术用于教学、旧软归档或演示的现实可用性。总体论点交织在工程赞赏、实用应用与安全/性能限制间。
一些评论者认为在浏览器中用 WebAssembly 运行完整 Linux 可以为 LLM/agent 提供极为有用的工具链和文件系统接口:Bash 被视为对模型最通用且强大的工具,能让模型调用 sed、perl、python 等现有工具并执行“Skills”式工作流,从而避免把大量 Unix 工具用 TypeScript 重写。支持者举例说明这能让代理直接编辑文件、运行脚本和执行复合任务,并把浏览器当作天然的沙箱环境来减少云端依赖。反对者与谨慎者则指出性能、网络与安全代价(例如 prompt injection、模拟整台机器带来的攻击面)以及与成熟替代方案(如 devcontainers、Codespaces、gvisor、firecracker)相比的冗余性。讨论同时提到折中方案和现有项目(Vercel 的 just-bash、container2wasm、BrowserPod、WebVM、Apptron 等)作为不同实现路径的优缺点。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6] [来源7] [来源8]
性能讨论集中在 ISA 特性、编译器版本与仿真实现对运行速度的影响:一个 Primes 基准在 x86_64 浏览器 VM 上花了约 7分38秒,而 riscv64 同样环境下仅约 3分;作者因此得出“RISC‑V 更易仿真、生成更小更快的代码”的结论,但评论指出不同目标镜像使用的 gcc 版本(如 x86_64 的 gcc 15.2 vs riscv64 的 7.3)会显著影响结果。实现细节也很关键:基于 x86 仿真的项目往往需要对向量指令做标量化或有 JIT 降级,能导致巨大慢化;相反,有项目宣称用“纯 WebAssembly kernel + WASM payload”路线(例如 BrowserPod)在某些场景能接近原生速度,而 WebVM/其他基于 x86 仿真的实现则在向量/系统调用等场景里性能受限。总体上评论显示:选择 RISC‑V 或把更多逻辑放到 WASM 层(而非模拟复杂 x86 微架构)常常能换来更好仿真性能,但这取决于编译器、JIT 实现与指令集细节。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6]
有人指出 JSLinux 的 x86_64 仿真层源码和构建配置并未一并发布,引发对闭源实现与复现性的担忧。评论中被反复推荐的开源替代包括 container2wasm(支持 x86_64、riscv64、AArch64,但在图形/特性上仍有缺陷,并使用 Bochs 的分支)和 copy/v86(目前不支持 x86_64)。讨论建议若能把 Bochs 或相关内核仿真组件拆出来并打补丁,社区可以更容易填补缺失功能;开源可获取性被视为推广、审计与长期维护的关键因素。
多位评论者给出了现实可行的用途:在浏览器中快速测试不同编译器组合和古老的编译器版本、为课堂提供零安装的 gcc/工具链环境、在网页上分享业余操作系统或旧系统(例如 TempleOS、旧版 Mac OS 的演示)以便更广泛访问。具体例子包括把 JSLinux 用于技术面试、课堂练习以及在浏览器上部署能直接用的构建环境,优点是无需本地虚拟机或管理员权限即可获得真实的 shell 和编译工具。若能支持磁盘镜像编辑或集成 authoring 工具(例如 Apptron、vfsync、devcontainer 流程),这类教学和档案用途会更方便。
[来源1] [来源2] [来源3] [来源4] [来源5] [来源6]
评论指出浏览器内完整 VM 的网络访问与沙箱边界并非零风险:JSLinux 使用第三方 websocket VPN 提供 Internet 访问,带有带宽上限(40 kB/s)和每个公网 IP 最多两条连接的限制,以防滥用;但仍有人担心能否从模拟环境直连外网(例如发送到 25 端口)以及 DNS/跨域(CORS)相关的问题。还有人提醒“安全通过小众化/冷门实现”并非长期可行的防御策略:一旦普及或受攻击者关注,需要专门的审计与补丁链条(内核、固件、驱动、qemu/仿真器本身等)。总体建议是如果把这类环境当作运行不可信代码的沙箱,必须明确网络代理、资源限制和审计流程。
许多评论对作者(Fabrice Bellard 所做的工程)及其成果表示钦佩,称在 Chrome 上长时间拉代码、从源码编译并跑测试套件尽管慢但“稳如磐石”,并惊讶于无 JIT 的实现也能表现良好。与此同时有元讨论抱怨论坛上 LLM/agent 话题太泛滥,有人把每个新工具都迅速和 AI 结合,令部分用户厌倦。整体情绪是技术性赞赏与对主题外延(AI/代理话题被频繁带入)的一定反感并存。
WebAssembly (WASM): 一种在浏览器中运行的低级字节码格式(WASM),可将 C/C++/Rust 等编译为在浏览器内高效执行的模块,常被用来把原生代码带入网页环境。
JSLinux: Fabrice Bellard 开发的浏览器内系统仿真项目,基于 TEMU 配置能在网页中运行完整 Linux 镜像,最新发布加入 x86_64 支持。
v86 (copy/v86): 一个用 JavaScript 实现的 x86 仿真器,社区常用来在浏览器运行旧系统,但当前分支尚未原生支持 x86_64。
container2wasm: 把容器镜像转换为 WebAssembly 可执行格式的开源项目,宣称支持 x86_64、riscv64 和 AArch64 等架构,背后可能使用 Bochs 或相似组件来实现内核/仿真。
BrowserPod: 一个基于 WebAssembly 的浏览器端 Linux 运行环境(由 leaningtech 等团队推进),采用纯 WASM kernel/payload 路线以追求接近原生的性能。
WebVM: Web 上的虚拟机项目,基于 x86 仿真加 JIT 编译,某些向量或系统调用场景中性能会被标量化/降低。
QEMU: 广泛使用的系统级仿真与虚拟化软件(最初由 Fabrice Bellard 编写),常作为性能与功能的参考实现。
RISC‑V: 一套开源精简指令集架构(ISA),因指令编码和实现简单性在仿真环境中通常比复杂的 x86 更易实现且在某些基准下表现更好。
TEMU: JSLinux 使用的仿真器配置/运行时格式,网页上的 VM 实例通常由 .cfg 等 TEMU 配置文件定义镜像与设备。
devcontainers: 一种把开发环境容器化的工作流/规范(例如 GitHub Codespaces 使用),可在云端或本地为开发者提供一致的工具链与 shell。