Skip to main content

Chrome To Deprecate ‘PNaCl,’ Embrace New ‘WebAssembly’ Standard

Google announced that its Portable Native Client (PNaCl) solution for making native code run inside the browser will be replaced by the new cross-browser web standard called WebAssembly.

NaCl And PNaCl

Around the same time Google introduced Chrome OS in 2011, it also announced Native Client (NaCl), a sandboxing technology that runs native code inside the browser. This was initially supposed to make Chrome OS a little more useful offline compared to only running web apps that required an internet connection.

Two years later, Google also announced PNaCl, which was a more portable version of NaCl that could work on ARM, MIPS, and x86 devices. NaCl, on the other hand, only worked on x86 chips.

Even though Google open sourced PNaCl, as part of the Chromium project, Mozilla ended up creating its own alternative called “asm.js,” an optimized subset of JavaScript that could also compile to the assembly language. Mozilla thought that asm.js was far simpler to implement and required no API compatibility, as PNaCl did.

As these projects seemed to go nowhere, with everyone promoting their own standard, the major browser vendors seem to have eventually decided on creating WebAssembly.


WebAssembly can give web apps near-native performance, offers support for more CPU features, and is simpler to implement in browsers and use by developers. Chrome 57 and Firefox 52 already support WebAssembly, and Microsoft’s Edge and Apple’s Safari support it in the preview versions of their browsers.

Google said that going forward, its native code efforts will focus on using WebAssembly. Meanwhile, PNaCl will be deprecated by the end of the first quarter of 2018. Chrome apps and extensions will continue to support it for a while longer. However, Chrome previously announced the deprecation of Chrome apps, too.

Google published a list of recommendations for developers who want to port their apps from PNaCl to WebAssembly, as well as a roadmap for WebAssembly features that will be supported in future versions of Chrome.