谷歌自去年解散PNaCL/NaCI 团队后,今年三月在Chrome 中添加了对WebAssembly 的默认支持。谷歌已经正式宣布不再支持PNaCI ,转而支持WebAssembly。
在 2013 年的谷歌 I/O 大会上,谷歌宣布 PNaCI 是在其浏览器内运行本地代码的解决方案。对于所有的平台,它要求有一个 LLVM 位码(bitcode),然后在运行 Chrome 的平台上翻译代码并执行之。它承诺性能接近本地代码的执行,允许老的或新的 C/C++ 代码在浏览器里安全地运行。虽然该技术正在实现其承诺,但其他浏览器供应商从未采用 PNaCI,开发人员也没有广泛地接受它。用谷歌自己的话来说,PNaCI 的采用率是“低到只能保证不被弃用”了。从 2018 年的第一季度开始,谷歌将不再支持 PNaCI,除非是 Chrome 的应用和插件。
作为替换,谷歌现在在推动 WebAssembly。 WebAssembly 有更多成功的机会,因为它被所有主流的浏览器供应商所接受,这其中包括苹果、微软和 Mozilla。WebAssembly 是一种标准化的二进制格式,编译工具把本地应用编译成这种格式以在浏览器上运行。它支持 C 和 C++,同时也对 Rust 有初始的支持。因为它还没有垃圾收集器,所以不支持像 Java 和 C#这样的语言,但是也许在未来会支持这类语言。
作为 WebAssembly 的成功案例,谷歌提到了其浏览器内置的视频编辑器和在浏览器内的Unity 引擎上运行的一款游戏。
Chrome 和 Firefox 目前默认支持 WebAssembly ,而目前 Edge 和 Safari 还是处于预览模式中。谷歌的路线图包括添加对异步的编译、asm.js、IndexedDB、线索、SIMD 等等的支持。这个 WebAssembly 迁移指南说明了如何弃用 PNaCI 的功能,可以拿什么来替换。
查看英文原文: Google Is to Remove Support for PNaCl
感谢薛命灯对本文的审校。
评论