Google Native Client
From Seo Wiki - Search Engine Optimization and Programming Languages
|Preview release||0.2 / June 1, 2009|
|Operating system||Microsoft Windows, Linux, Mac OS|
|Development status||Research stage|
|Type||Native code sandboxing in the web browser|
|License||New BSD license|
Google Native Client (abbreviated as NaCl) is a sandboxing technology for running a subset of Intel x86 native code using software-based fault isolation. Currently in an early development stage, it is proposed for safely running native code from a web browser, allowing web-based applications to run at near-native speeds. Native Client is an open source project being developed by Google. To date, Quake and XaoS have been ported to Google Native Client Platform. Native Client is supported on Firefox, Safari, Opera, and Google Chrome running on Windows, Mac, or Linux on x86 hardware.
Native Client is notable for its novel sandboxing technique 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 instructions that perform system calls. In order 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 are jumps to the start of 32-byte-aligned blocks, and instructions are not allowed to straddle these blocks. Because of these constraints, C code must be recompiled to run under Native Client, which provides customised versions of the GNU toolchain (specifically, gcc and binutils).
Native Client is licensed under a BSD-style licence.
- ↑ Efficient software-based fault isolation, Robert Wahbe, Steven Lucco, Thomas E. Anderson, Susan L. Graham, 1993
- ↑ 2.0 2.1 Native Client: A Technology for Running Native Code on the Web
- ↑ Google Native Client on Google Code
- ↑ Native Client: A Sandbox for Portable, Untrusted x86 Native Code
- ↑ http://plash.beasts.org/wiki/NativeClient