一句话:提出 Browsix,在浏览器中提供 Unix 运行时,使未修改程序可直接运行。
浏览器缺少进程、管道、信号、套接字和共享文件系统等 OS 抽象,传统应用移植到 Web 常需重写或依赖服务端。Browsix 使期望 Unix 环境的未修改程序直接在浏览器运行。它由纯 JavaScript Unix 特性层(管道、并发进程、信号、套接字、共享文件系统)和为 C/C++/Go/Node.js 扩展的 JavaScript 运行时组成,并支持 POSIX shell。案例研究显示,未修改的 pdfLaTeX 和 BibTeX 可构建纯浏览器 LaTeX 编辑器并数秒渲染;客户端-服务器应用可移植为浏览器内断网运行,仅需不到 50 行胶水代码且无需修改原程序。
Applications written to run on conventional operating systems typically depend on OS abstractions like processes, pipes, signals, sockets, and a shared file system. Porting these applications to the web currently requires extensive rewriting or hosting significant portions of code server-side because browsers present a nontraditional runtime environment that lacks OS functionality. This paper presents Browsix, a framework that bridges the considerable gap between conventional operating systems and the browser, enabling unmodified programs expecting a Unix-like environment to run directly in the browser. Browsix comprises two core parts: (1) a JavaScript-only system that makes core Unix features (including pipes, concurrent processes, signals, sockets, and a shared file system) available to web applications; and (2) extended JavaScript runtimes for C, C++, Go, and Node.js that support running programs written in these languages as processes in the browser. Browsix supports running a POSIX shell, making it straightforward to connect applications together via pipes. We illustrate Browsix's capabilities via case studies that demonstrate how it eases porting legacy applications to the browser and enables new functionality. We demonstrate a Browsix-enabled LaTeX editor that operates by executing unmodified versions of pdfLaTeX and BibTeX. This browser-only LaTeX editor can render documents in seconds, making it fast enough to be practical. We further demonstrate how Browsix lets us port a client-server application to run entirely in the browser for disconnected operation. Creating these applications required less than 50 lines of glue code and no code modifications, demonstrating how easily Browsix can be used to build sophisticated web applications from existing parts without modification.