Native Client

Google Native Client（縮寫為），是一个由谷歌所發起的開放原始碼計劃，採用BSD许可证。它採用沙盒技術，讓Intel x86、ARM或MIPS子集的機器碼直接在沙盒上運行。它能夠從瀏覽器直接運行程式機器碼，獨立於使用者的作業系統之外，使Web應用程式可以用接近於機器碼運作的速度來執行，同時兼顧安全性。其功能類似於微軟的 ActiveX，但是ActiveX只支援Windows系統。

Google將這項功能合併在Chrome OS之下開發。它也可以被用來開發安全的瀏覽器外掛程式。

2017年5月31日，Google宣布放棄PNaCl轉向WebAssembly。

技術內容
NaCl使用Newlib作為它的C標準函式庫，但它也支援GNU C 函式庫。

它最初只支援x86平台，但目前也支援ARM平台與x86-64。

沙盒技術
NaCl運用沙盒技术以防止外來（第三方）機器碼影響系統安全；特別是在x86平台上運用記憶體區段，限制外掛程式所能讀寫的記憶體范围。Native Client: A Sandbox for Portable, Untrusted x86 Native Code

由於ARM與x86-64長模式不支援記憶體區段，因此在這些平台上NaCl的記憶體寫入地址是由沙盒過濾。

機器碼驗證器
NaCl運用機器碼驗證器（Code Validator）来保證只有安全機器碼能在系統執行。由於x86/x86-64是複雜指令集，指令長度不一，透過控制流程可能隱藏非安全機器碼，從而使驗證十分耗時。NaCl運用固定長度的16或32位元組的指令束(Instruction Bundle)，使機器碼驗證器設計簡單（只有約600行C語言）和高效率；  而運用指令束只是失去5%的執行效率。

 應用軟件的移植 
NaCl支援單指令流多數據流指令（如SSE、3DNow!）及多執行緒介面，應用軟件一般只需簡單的修改便可以移植到NaCl平台；在2009年一個發布會上，NaCl開發人員示範一個為NaCl平台的移植而修改了20行原始碼的H264解碼器軟件。

 參考資料 

外部連結
  NaCl計劃官網
   - Google I/O 2009技術專題討論
   - Google I/O 2012技術專題討論

Category:Google軟體
Category:自由软件
Category:安全软件