Google Native Client
| Google Native Client | |
|---|---|
| Developers | Google, others |
| Initial release | 16 September 2011 |
| Stable release | SDK: Pepper 45 / 10 July 2015
Clients: Same as Google Chrome |
| Written in | C, C++ |
| Operating system | Windows, Linux, macOS, ChromeOS |
| Platform | x86, ARM, MIPS |
| Successor | WebAssembly |
| Type | Sandbox in web browsers for native code |
| License | New BSD |
| Website | developer |
| Repository | |
Google Native Client (NaCl) is a discontinued sandboxing technology for running either a subset of Intel x86, ARM, or MIPS native code, or a portable executable, in a sandbox. Google Chrome and other Chromium-based web browsers incorporated NaCl to safely run native code within web apps and browser extensions, largely independent of the user operating system and at near-native speeds. This capability was imperative for Google's plans for ChromeOS as a general-purpose computing platform. NaCl was also used for securing browser plugins, like Adobe Flash Player, and parts of other applications or full applications such as ZeroVM.
The general concept of NaCl (running native code in the web browser) has been implemented before in ActiveX, but NaCl runs content in a sandbox while ActiveX application has full access to the system (disk, memory, user-interface, registry, etc.). Mozilla proposed asm.js as an alternative to both ActiveX and NaCl. asm.js also allows applications written in C or C++ to be compiled to run in the browser and also supports ahead-of-time compilation, but is a subset of JavaScript and hence backwards-compatible with browsers that do not support it directly.
In 2016, Google de-prioritized feature development for Pepper and Native Client. On 30 May 2017, Google announced deprecation of PNaCl in favor of WebAssembly. Over the following years, Google Chrome slowly deprecated and removed NaCl on different platforms. ChromeOS version 137 released in 2025 became the last platform and version to support Native Client.