WebAssembly 最初被设计为在 Web 浏览器中,具有接近本机的性能,安全运行以其他语言(如 C/ c++ )编写的代码。Luke Wagner 曾在自己的 Mozilla 博客上发布了一条公告:“我很高兴向大家报告,我们在 Mozilla 开始跟 Chromium、Edge 和 WebKit 的工程师们合作创建新的标准——WebAssembly。它定义了一种可移植,而且尺寸和加载效率更高的格式与执行模型,专供 Web 编译场景使用。”在 W3 的协助下,核心 Wasm 规范已经被列为“推荐”项目,且各大主流浏览器也都为其提供支持。并且多数语言都已经能够支持 Wasm。
在此期间,Wasm 在浏览器之外的优势也被越来越多的人所注意。当前 JavaScript 经常被用来在服务器上运行,如 Edge 函数或 Cloudflare 工作人员,而 Wasm 正好适合这种环境。Wasmer 是在非浏览器上下文中运行 Wasm 的另一种方式,为其他跨平台运行时(如Java)提供了一个潜在的替代方案。
Wasmer 在 GitHub 上将自己描述为“一个快速且安全的WebAssembly 运行,使超轻量级的容器可以在任何地方运行:从桌面到云、边缘和物联网设备。”
在这过程中,已经有很多人认为 Wasm 的未来就在于能在浏览器之外运行它。当前的新标准使 WebAssembly 能够在浏览器之外使用,但是否值得使用呢?
事实上,正是这些特性使它适用于浏览器,并更适用于云。