天天看點

谷歌将不再支援PNaCI

谷歌自去年解散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的功能,可以拿什麼來替換。

本文轉自d1net(轉載)