|
:''Not to be confused with Networking and Cryptography library.'' Google Native Client (NaCl) is a sandboxing technology for running a subset of Intel x86/x86-64, ARM or MIPS native code in a sandbox. It allows safely running native code from a web browser, independent of the user operating system, allowing web-based applications to run at near-native speeds, which aligns with Google's plans for Chrome OS. It may also be used for securing browser plugins, and parts of other applications or full applications such as ZeroVM.〔(【引用サイトリンク】title= ZeroVM Architecture )〕 To demonstrate the readiness of the technology, on 9 December 2011, Google announced the availability of several new Chrome-only versions of games known for their rich and processor-intensive graphics, including ''Bastion'' (Bastion is no longer supported on the Chrome Web Store). NaCl runs hardware-accelerated 3D graphics (via OpenGL ES 2.0), sandboxed local file storage, dynamic loading, full screen mode, and mouse capture. There are also plans to make NaCl available on handheld devices. Using PNaCl, Native Client is also architecture-independent. PNaCl apps are compiled ahead-of-time. PNaCL is recommend over NaCL for most use cases.〔 https://developer.chrome.com/native-client/nacl-and-pnacl#when-to-use-pnacl 〕 The general concept of NaCl (running native code in web browser) has been implemented before in ActiveX, which, while still in use, has a legacy of DLL hell and security problems. Native Client avoids these issues by using sandboxing. An alternative of sorts to NaCl is asm.js, which also allows applications written in C or C++ to be compiled to run in the browser (at more than half the native speed), 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. ==Overview== Native Client is an open-source project being developed by Google.〔(【引用サイトリンク】title=Google Native Client on Google Code )〕 To date, ''Quake'',〔https://github.com/davemichael/NaCl-Quake〕 ''XaoS'', ''Battle for Wesnoth'',〔https://chrome.google.com/webstore/detail/the-battle-for-wesnoth/pobnonecghmlpppkkjpdiiblmakhhldb〕 ''Doom'',〔http://doom.pdox.net〕 ''Lara Croft and the Guardian of Light''〔https://chrome.google.com/webstore/detail/lara-croft-and-the-guardi/dcfdbmpeeihbpddkneaploeinlbaaodn〕 and MAME, as well as the sound processing system Csound, have been ported to Native Client. Native Client has been available in the Google Chrome web browser since version 14, and has been enabled by default since version 31, when Portable Native Client (PNaCl, pronounced: pinnacle) was released. An ARM implementation was released in March 2010. x86-64, IA-32 and MIPS are also supported. To run an application portably under PNaCl, it must be compiled to an architecture-agnostic and stable subset of the LLVM intermediate representation bytecode.〔(【引用サイトリンク】title=PNaCl: Portable Native Client Executables )〕 The executables are called PNaCl executables (pexes). In Chrome, they are translated to architecture-specific executables so that they can be run. NaCl uses software fault detection and isolation for sandboxing on x86-64 and ARM. The x86-32 implementation of Native Client is notable for its novel sandboxing method which makes use of the x86 architecture's rarely used segmentation facility. Native Client sets up x86 segments to restrict the memory range that the sandboxed code can access. It uses a code verifier to prevent use of unsafe instructions such as those that perform system calls. To prevent the code from jumping to an unsafe instruction hidden in the middle of a safe instruction, Native Client requires that all indirect jumps be jumps to the start of 32-byte-aligned blocks, and instructions are not allowed to straddle these blocks.〔 Because of these constraints, C and C++ code must be recompiled to run under Native Client, which provides customized versions of the GNU toolchain, specifically GNU Compiler Collection (GCC), GNU Binutils, and LLVM. Native Client is licensed under a BSD-style license. Native Client uses Newlib as its C library, but a port of GNU C Library (GNU libc) is also available.〔(【引用サイトリンク】title=Native Client: Building )〕 抄文引用元・出典: フリー百科事典『 ウィキペディア(Wikipedia)』 ■ウィキペディアで「Google Native Client」の詳細全文を読む スポンサード リンク
|