After de-staffing the PNaCL/NaCl team last year and adding default support for WebAssembly in Chrome in March of this year, Google has officially announced the retirement of PNaCl in favor of WebAssembly.
Announced at Google I/O 2013, PNaCl was Google solution to run native code in the browser. It required one LLVM bitcode for all platforms, and the browser would then translate and execute the code on the platform where Chrome was running. It promised performance close to native code execution, allowing old or new C/C++ code to run securely in the browser. While the technology was fulfilling its promise, PNaCl never saw adoption among other browser vendors, and it was not largely embraced by developers. In Google’s own words, PNaCl's usage is "sufficiently low to warrant deprecation." From Q1/2018, Chrome will no longer support PNaCl except for Chrome Apps and Extensions.
As a replacement, Google is now pushing WebAssembly. WebAssembly has a lot more chances to succeed because it has been embraced by all major browser vendors including Apple, Microsoft and Mozilla. WebAssembly is a standardized binary format that can be targeted by tools compiling native applications for the browser. It comes with support for C and C++ and there is incipient support for Rust. Since it does not have a garbage collector yet, languages such as Java and C# are not supported yet, but they may be supported in the future.
As success stories for WebAssembly, Google pointed to this in-browser video editor and a game running on the Unity engine inside the browser.
Chrome and Firefox currently support WebAssembly by default while Edge and Safari are in preview mode at this time. The roadmap for Chrome includes adding support for asynchronous compilation, asm.js, IndexedDB, threads, SIMD, among others. This WebAssembly Migration Guide presents how PNaCl features will be deprecated and what to use instead.