- Learn WebAssembly
- Mike Rourke
- 353字
- 2021-08-13 15:38:47
Google and Native Client
Google developed Native Client (NaCl) with the intent to safely run native code within a web browser. The executable code would run in a sandbox and offered the performance advantages of native code execution.
NaCl was tied to a specific architecture, while Portable Native Client (PNaCl) was an architecture-independent version of NaCl developed to run on any platform. The technology consisted of two elements:
- Toolchains which could transform C/C++ code to NaCl modules
- Runtime components which were components embedded in the browser that allowed execution of NaCl modules:

NaCl's architecture-specific executable (nexe) was limited to applications and extensions that were installed from Google's Chrome Web Store, but PNaCl executables (pexe) can be freely distributed on the web and embedded in web applications. Portability was made possible with Pepper, an open source API for creating NaCl modules, and its corresponding plugin API (PPAPI). Pepper enabled communication between NaCl modules and the hosting browser, and allowed for access to system-level functions in a safe and portable way. Applications could be easily distributed by including a manifest file and a compiled module (pexe) with the corresponding HTML, CSS, and JavaScript:

NaCl offered promising opportunities to overcome the performance limitations of the web, but it had some drawbacks. Although Chrome had built-in support for PNaCl executables and Pepper, other major browser did not. Detractors of the technology took issue with the black-box nature of the applications as well as the potential security risks and complexity.
Mozilla focused its efforts on improving the performance of JavaScript with asm.js. They wouldn't add support for Pepper to Firefox due to the incompleteness of its API specification and limited documentation. In the end, NaCl was deprecated in May, 2017, in favor of WebAssembly.
- 玩轉Scratch少兒趣味編程
- 程序員考試案例梳理、真題透解與強化訓練
- NumPy Essentials
- 手把手教你學C語言
- Python數據可視化之Matplotlib與Pyecharts實戰
- Visual C#.NET程序設計
- Integrating Facebook iOS SDK with Your Application
- 劍指大數據:企業級數據倉庫項目實戰(在線教育版)
- Statistical Application Development with R and Python(Second Edition)
- Node.js區塊鏈開發
- Java EE 7 with GlassFish 4 Application Server
- 從零開始學Python大數據與量化交易
- Java程序設計
- C/C++代碼調試的藝術
- Getting Started with Phalcon