现代浏览器可能是人类最复杂的软件工程之一。每个浏览器都搭载着庞大的子系统:JavaScript引擎、HTML解析器、CSS引擎、DOM引擎、渲染引擎、布局系统、样式系统,以及为几十年遗留行为准备的兼容层。但作者认为,这套架构正背负着过重的历史包袱。
浏览器的角色早已改变。它不再是单纯的"文档查看器",而越来越像操作系统:沙箱、权限管理、进程隔离、任务调度、GPU访问、网络、存储、进程间通信、安全边界——这些功能一应俱全。它正在变成一个安全、可移植的运行时平台。
但当前的浏览器技术栈仍深深绑定在文档时代:HTML、CSS、JavaScript、DOM。这些技术在网页主要是文档、文章、表单、超链接页面时完全合理。然而如今的网页正在变成应用、IDE、游戏、创意工具、模拟环境、操作系统界面。网页正在从"文档"进化为"软件"。
WebAssembly改变了这一哲学。应用不再是解释执行的脚本、不再是操作庞大的DOM树、不再依赖浏览器特定行为,而是变成编译后的软件。语言编译成WebAssembly,再运行在通用Web虚拟机上。浏览器不再需要理解每一种语言生态,只需提供安全、沙箱、图形、音频、网络、存储、调度和宿主API。其余一切交给可移植的编译应用。
作者认为,HTML/CSS/JavaScript不应消失——向后兼容很重要。但浏览器架构应该翻转优先级:不再是HTML/CSS/JS作为核心平台、Wasm作为附加组件,而是Web虚拟机作为核心平台、HTML/CSS/JS作为兼容模式。未来的浏览器可以搭载一个精简的"遗留网页子系统":小型JavaScript引擎(如QuickJS)、紧凑的HTML/CSS解析器、轻量渲染器、兼容层。足够小,以至于可以永久维护。旧网页无限期正常工作,但现代软件直接面向虚拟机。
作者构想的Web虚拟机包含:Wasm运行时、GPU API、音频API、窗口/UI API、网络、文件系统/存储、沙箱,以及遗留网页子系统。应用直接编译到这个环境中,不是编译成JavaScript,不是编译成HTML树,而是编译进虚拟机本身。
热门跟贴