Google Native Client
Developer(s) Google, others
Preview release 1.0 / 12 October 2011; 8 months ago  (2011-10-12)
Development status Research
Written in C++
Operating system Cross-platform: Microsoft Windows, Linux, Mac OS, Chrome OS
Type Sandbox in web browsers for native code
License New BSD license
Website code.google.com/p/nativeclient

Google Native Client (NaCl) is a sandboxing technology for running a subset of Intel x86 or ARM native code using software-based fault isolation.[1] It is proposed for safely running native code from a web browser, allowing web-based applications to run at near-native speeds,[2] which aligns well with Google's plans with Chrome OS. It may also be used for securing browser plugins, and in the future parts of other applications or full applications.[3]

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. 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.[4][5]

Contents

Overview [link]

Native Client is an open-source project being developed by Google.[6] To date, Quake, XaoS and MAME have been ported to Google Native Client Platform. Native Client was formerly available as an experimental disabled-by-default feature in the Google Chrome web browser.[2] The feature is enabled from version 14 of Chrome; at the same time, native applications can be uploaded to the Chrome Web Store, and with more recent Chrome versions (if enabled in chrome://flags), native client applications can run under Chrome from any web site.[7] When Portable Native Client (PNaCl) is released, Chrome will enable Native Client (by default) for all pages and web apps, including those distributed outside the Chrome Web Store.[8]

An ARM implementation was released in March 2010.[9] x86-64 and IA-32 are also supported. As of March 2011, however, all three implementations could only use code compiled to the host's native instruction set. PNaCl (Portable Native Client, pronounced: pinnacle) is being developed to address this issue. To run an application portably under PNaCl, it must be compiled to an architecture-agnostic version of the LLVM intermediate representation bytecode.[10]

NaCl uses Software Fault Isolation for sandboxing on x86-64 and ARM.[11] 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.[12] 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.[12] 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 license.

Native Client uses Newlib as its C library, but a port of GNU libc is also available.[13]

Since release 0.5, Native Client has a stable ABI.[14] This roughly means that code compiled and running in the NaCl implementation of Google Chrome 14, will work in all future versions of Google Chrome.

Pepper [link]

NaCl denotes table salt; as a pun, the name of pepper was also used. Pepper API is a cross-platform, open-source API for creating Native Client modules.[15] Pepper Plugin API, or PPAPI[16][17] is a cross-platform API for Native Client-secured web browser plugins, first based on Netscape's NPAPI, then rewritten from scratch. It is currently an experimental feature of Chromium and Google Chrome (there is a Chrome experiment in chrome://flags to enable the PPAPI version of Flash), though the built-in PDF viewer already uses it.[18]

PPAPI [link]

On 12 August 2009 a page on Google Code introduced a new project, Pepper with associated Pepper Plugin API (PPAPI),[19] "a set of modifications to NPAPI to make plugins more portable and more secure".[20] This extension is designed specifically to ease the implementation of out-of-process plugin execution. Further, the goals of the project are to provide a framework for making plugins fully cross-platform. Topics considered include:

  • Uniform semantics for NPAPI across browsers.
  • Execution in a separate process from the renderer/browser itself.
  • Standardize rendering using the browser's compositing process.
  • Defining standardized events, and 2D rasterization functions.
  • Initial attempt at providing 3D graphics access.
  • Plugin registry.

The continuosly evolving Pepper API also supports Gamepads (version 19) and WebSockets (version 18).[21]

As of 13 May 2010, Google's open source browser, Chromium, was the only web browser to utilize the new browser plug-in model.[22] Mozilla has announced that they are "not interested in or working on Pepper at this time."[23]

Reception [link]

Some groups of browser developers support the Native Client technology, but others do not.

Supporters: Chad Austin (of IMVU) praised the way Native Client can bring high-performance applications to the web (with about 5% penalty compared to native code) in a secure way, while also accelerating the evolution of client-side applications by giving a choice of the programming language used (beside JavaScript).[24]

Detractors: Other IT professionals are more critical of this sandboxing technology as it has substantial or substantive interoperability issues.

Mozilla's vice president of products, Jay Sullivan, said that Mozilla has no intention of running native code inside the browser, as "These native apps are just little black boxes in a webpage. [...] We really believe in HTML, and this is where we want to focus."[25]

Mozilla's Christopher Blizzard criticized NaCl, claiming that native code cannot evolve in the same way that the source code-driven Internet can. He also compared NaCl to Microsoft's ActiveX technology, plagued with DLL hell.[3]

Håkon Wium Lie, Opera's CTO, believes that "NaCl seems to be 'yearning for the bad old days, before the web'", and that "Native Client is about building a new platform – or porting an old platform into the web [...] it will bring in complexity and security issues, and it will take away focus from the web platform."[3]

References [link]

  1. ^ Efficient software-based fault isolation, Robert Wahbe, Steven Lucco, Thomas E. Anderson, Susan L. Graham, 1993
  2. ^ a b Marchak, Mike (8 December 2008). "Native Client: A Technology for Running Native Code on the Web". Google-code-updates.blogspot.com. https://google-code-updates.blogspot.com/2008/12/native-client-technology-for-running.html. Retrieved 25 April 2012. 
  3. ^ a b c Cade Metz (12 September 2011). "Google Native Client: The web of the future – or the past?". The Register. https://www.theregister.co.uk/2011/09/12/google_native_client_from_all_sides/. Retrieved 17 September 2011. 
  4. ^ Seth Rosenblatt (9 December 2011). "Native Client turns Chrome into high-end gaming platform". CNET. https://download.cnet.com/8301-2007_4-57340015-12/native-client-turns-chrome-into-high-end-gaming-platform/. Retrieved 9 December 2011. 
  5. ^ "Google Code Blog: Games, apps and runtimes come to Native Client". Googlecode.blogspot.com. 9 December 2011. https://googlecode.blogspot.com/2011/12/games-apps-and-runtimes-come-to-native.html. Retrieved 25 April 2012. 
  6. ^ "Google Native Client on Google Code". Google. https://code.google.com/p/nativeclient/. Retrieved 25 April 2012. 
  7. ^ "The Chromium Blog: Native Client Brings Sandboxed Native Code to Chrome Web Store Apps". Blog.chromium.org. 18 August 2011. https://blog.chromium.org/2011/08/native-client-brings-sandboxed-native.html. Retrieved 25 April 2012. 
  8. ^ "Distributing Your Application". developers.google.com. https://developers.google.com/native-client/devguide/distributing. 
  9. ^ "Google's Native Client goes ARM and beyond". The H. 18 March 2010. https://www.h-online.com/open/news/item/Google-s-Native-Client-goes-ARM-and-beyond-957478.html. Retrieved 19 May 2010. 
  10. ^ "PNaCl: Portable Native Client Executables" (PDF). https://nativeclient.googlecode.com/svn/data/site/pnacl.pdf. Retrieved 25 April 2012. 
  11. ^ David Sehr, Robert Muth, Cliff L. Biffle, Victor Khimenko, Egor Pasko, Bennet Yee, Karl Schimpf, Brad Chen (2010). "Adapting Software Fault Isolation to Contemporary CPU Architectures". 19th USENIX Security Symposium. https://research.google.com/pubs/pub35649.html. Retrieved 31 July 2011. 
  12. ^ a b Bennet Yee, David Sehr, Greg Dardyk, Brad Chen, Robert Muth, Tavis Ormandy, Shiki Okasaka, Neha Narula, Nicholas Fullagar (2009). "Native Client: A Sandbox for Portable, Untrusted x86 Native Code". IEEE Symposium on Security and Privacy (Oakland'09). https://research.google.com/pubs/pub34913.html. Retrieved 31 July 2011. 
  13. ^ "NativeClient: Plash Wiki". Plash.beasts.org. 2 October 2009. https://plash.beasts.org/wiki/NativeClient. Retrieved 25 April 2012. 
  14. ^ Official NaCl Release Notes
  15. ^ Native Client: Technical Overview
  16. ^ "Pepper Plugin API project at". Google. https://code.google.com/p/ppapi/. Retrieved 25 April 2012. 
  17. ^ "Chrome Source: Index of /trunk/src/ppapi". Src.chromium.org. https://src.chromium.org/viewvc/chrome/trunk/src/ppapi/. Retrieved 25 April 2012. 
  18. ^ Metz, Cade (18 June 2010). "Google hugs Adobe harder with Chrome-PDF merge". The Register. https://www.theregister.co.uk/2010/06/18/chrome_dev_builds_get_built_in_pdf_reader/. Retrieved 25 April 2012. 
  19. ^ "Getting Started: Background and Basics – The Chromium Projects". Chromium.org. https://www.chromium.org/nativeclient/getting-started/getting-started-background-and-basics#TOC-Pepper-Plugin-API-PPAPI-. Retrieved 25 April 2012. 
  20. ^ Comment by t.hajdu....@gmail.com (24 February 2012). "Pepper.wiki". Google. https://code.google.com/p/ppapi/wiki/Concepts. Retrieved 25 April 2012. 
  21. ^ Native Client: News & Announcements
  22. ^ Metz, Cade (13 May 2010). "Google heats up native code for Chrome OS". Theregister.co.uk. https://www.theregister.co.uk/2010/05/13/google_native_client_sdk/. Retrieved 25 April 2012. 
  23. ^ "NPAPI:Pepper – MozillaWiki". Wiki.mozilla.org. 26 May 2011. https://wiki.mozilla.org/NPAPI:Pepper. Retrieved 25 April 2012. 
  24. ^ Austin, Chad (8 January 2011). "Chad Austin: In Defense of Language Democracy (Or: Why the Browser Needs a Virtual Machine)". Chadaustin.me. https://chadaustin.me/2011/01/in-defense-of-language-democracy/. Retrieved 25 April 2012. 
  25. ^ Metz, Cade (24 June 2010). "Mozilla: Our browser will not run native code". The Register. https://www.theregister.co.uk/2010/06/24/jay_sullivan_on_firefox/. Retrieved 25 April 2012. 

External links [link]

Examples [link]


https://wn.com/Google_Native_Client

Podcasts:

PLAYLIST TIME:

Anna

by: BAP

Wer sht dann, dat ich dich noch vermess un
Ich hing nur noch vr der Kess?Nchtelang, dat ess wirklich nit wohr.
N, em hnz, ich saach et dir, hhr mir joot zo:
Aff un zo sinn andre Fraue do, aff un zo.
Jo, ich kumme schon kloor.
Joot, ich drink jetz'e paar Droppe mieh,
Doch, wat soll't et deit ech nit mieh wieh.
Hann die janze Buud renoviert, woot och Zigg un ich saach et dir:
Htt sich rentiert, he ess nix mieh, wat zo dunn htt met dir, nur om
Flur dat verstemmte Klavier.
Ahnunfrsich denk ich kaum noch ahn dich,
Jarkei Problem ich hann alles om Schirm.
Ahnunfrsich denk ich kauf noch ahn dich,
Ahnunfrsich.
Joot, ich hann lnger nit opjerhmp
Un dat Leejut knnt och weg, stemmp.
Vver nit, dat mer he nix mieh fingk,
Fing och nit, dat die Sphlmaschin
Noh Mllmmer stink
Un d Lou Reed noh Beerdijung klingk.
Wat wei ich, wovun d'm Augebleck singk!?
Nobby sht, et jv ene Typ,
Wo mer dich neuerdings off met sieht.
Denk jetz nit, dat mir dat ir'ndjet mht.
Jedenfalls, wenn d lppsch weed, roof ahn, saach
Mer Bescheid. Ich kumm jhn ens koot me'm Hammer vorbei un bring ihm




×