Thu . 19 Feb 2019

Google Native Client

google native client, google chrome native client
Clients: Same as Google Chrome

Repository chromiumgooglesourcecom/native_client/src/native_clientgit Development status Production NaCl, PNaCl Written in C, C++ Operating system Windows, Linux, OS X, Chrome OS Platform x86, ARM, MIPS Type Sandbox in web browsers for native code License New BSD Website developerchromecom/native-client

Google Native Client NaCl is a sandboxing technology for running a subset of Intel x86, 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

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 no longer supported on the Chrome Web Store NaCl runs hardware-accelerated 3D graphics via OpenGL ES 20, sandboxed local file storage, dynamic loading, full screen mode, and mouse capture There are also plans to make NaCl available on handheld devices

Portable Native Client PNaCl is an architecture-independent version PNaCl apps are compiled ahead-of-time PNaCl is recommended over NaCl for most use cases 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 asmjs, 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 Another alternative while it may initially be powered by PNaCl is WebAssembly

On October 12, 2016, a comment on the Chromium issue tracker indicated that Google's Pepper and Native Client teams had been destaffed

Contents

  • 1 Overview
  • 2 Pepper
    • 21 PPAPI
  • 3 Applications
  • 4 Reception
  • 5 See also
  • 6 References
  • 7 External links
    • 71 Examples

Overview

Native Client is an open-source project being developed by Google To date, Quake, XaoS, Battle for Wesnoth, Doom, Lara Croft and the Guardian of Light, From Dust, 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 the 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 The executables are called PNaCl executables pexes The PNaCl Toolchain makes pexe files; NaCl Toolchain nexe files The magic number of nexe files is 0x7F 'E' 'L' 'F', which is ELF 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

Pepper

See also: NPAPI § PPAPI

NaCl denotes sodium chloride, common 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 Pepper Plugin API, or PPAPI 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 used in Chromium and Google Chrome to enable the PPAPI version of Adobe Flash and the built-in PDF viewer

PPAPI

On 12 August 2009, a page on Google Code introduced a new project, Pepper, and the associated Pepper Plugin API PPAPI, "a set of modifications to NPAPI to make plugins more portable and more secure" This extension is designed specifically to ease implementing 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
  • Standardize rendering using the browser's compositing process
  • Defining standardized events, and 2D rasterizing functions
  • Initial attempt to provide 3D graphics access
  • Plugin registry

The continuously evolving Pepper API also supports Gamepads version 19 and WebSockets version 18

As of 13 May 2010, Google's open source browser, Chromium, was the only web browser to use the new browser plug-in model Mozilla Firefox will not support Pepper, as there is no full specification of the API beyond its implementation in Chrome, which itself is designed for use with Blink layout engine only, and has private APIs specific to the Flash Player plugin which are not documented In October 2016 Mozilla reversed its decision and announced that it was considering to incorporate the Pepper API and PDFium in future releases of Firefox As of 2015, Pepper is supported by Chrome, Chromium and Blink layout engine-based browsers such as Opera

Applications

One website uses NaCL to let users experiment with the Go programming language from their browsers

Reception

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 besides JavaScript

Id Software's John D Carmack praised Native Client at QuakeCon 2012, saying: "if you have to do something inside a browser, Native Client is much more interesting as something that started out as a really pretty darn clever x86 hack in the way that they could sandbox all of this in user mode interestingly It's now dynamic recompilation, but something that you program in C or C++ and it compiles down to something that's going to be not your -O4 optimization level for completely native code but pretty damn close to native code You could do all of your evil pointer chasings, and whatever you want to do as a to-the-metal game developer"

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 plans to run 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"

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

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"

See also

  • Free software portal
  • Application virtualization
  • Emscripten
  • Sandboxie, running Windows programs in a sandbox
  • WebAssembly, a bytecode standard for web browsers
  • XAML Browser Applications XBAP

References

  1. ^ "Google's Native Client goes live in Chrome" The Register 2011-09-16 Retrieved 2016-03-12 
  2. ^ " Revision 213999" 
  3. ^ a b c Cade Metz 12 September 2011 "Google Native Client: The web of the future – or the past" The Register Retrieved 17 September 2011 
  4. ^ "ZeroVM Architecture" Retrieved 16 March 2014 
  5. ^ Seth Rosenblatt 9 December 2011 "Native Client turns Chrome into high-end gaming platform" CNET Retrieved 9 December 2011 
  6. ^ "Google Code Blog: Games, apps and runtimes come to Native Client" Googlecodeblogspotcom 9 December 2011 Retrieved 25 April 2012 
  7. ^ "NaCl and PNaCl" 
  8. ^ "Bugschromiumorg" 12 October 2016 Retrieved 12 October 2016 
  9. ^ "Google Native Client on Google Code" Google Retrieved 25 April 2012 
  10. ^ davemichael "GitHub - davemichael/NaCl-Quake: Quake for Native Client based on the SDL Quake port" GitHub 
  11. ^ "The Battle for Wesnoth" 
  12. ^ "Index of /" 
  13. ^ https://chromegooglecom/webstore/detail/lara-croft-and-the-guardi/dcfdbmpeeihbpddkneaploeinlbaaodn
  14. ^ "From Dust" 
  15. ^ Chen, Brad 8 December 2008 "Native Client: A Technology for Running Native Code on the Web" Google-code-updatesblogspotcom Retrieved 25 April 2012 
  16. ^ "The Chromium Blog: Native Client Brings Sandboxed Native Code to Chrome Web Store Apps" Blogchromiumorg 18 August 2011 Retrieved 25 April 2012 
  17. ^ "Google Code Blog: Portable Native Client: The "pinnacle" of speed, security, and portability" blogchromiumorg 12 November 2013 Retrieved 16 March 2014 
  18. ^ "Google's Native Client goes ARM and beyond" The H 18 March 2010 Retrieved 19 May 2010 
  19. ^ "PNaCl: Portable Native Client Executables" PDF Retrieved 25 April 2012 
  20. ^ 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 Retrieved 31 July 2011 
  21. ^ 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 Retrieved 31 July 2011 
  22. ^ "Native Client: Building" developerchromecom Retrieved 16 March 2014 
  23. ^ "Technical Overview" 
  24. ^ "Pepper Plugin API project at" Google Retrieved 25 April 2012 
  25. ^ "Chrome Source: Index of /trunk/src/ppapi" Srcchromiumorg Retrieved 25 April 2012 
  26. ^ "The road to safer, more stable, and flashier Flash" Google 8 August 2012 Retrieved 10 August 2013 
  27. ^ Metz, Cade 18 June 2010 "Google hugs Adobe harder with Chrome-PDF merge" The Register Retrieved 25 April 2012 
  28. ^ "Getting Started: Background and Basics – The Chromium Projects" Chromiumorg Retrieved 25 April 2012 
  29. ^ Comment by thajdu@gmailcom 24 February 2012 "Pepperwiki" Google Retrieved 25 April 2012 
  30. ^ "Release Notes" 
  31. ^ Metz, Cade 13 May 2010 "Google heats up native code for Chrome OS" Theregistercouk Retrieved 25 April 2012 
  32. ^ Zbarsky, Boris "Bug 729481 - Support the "Pepper" Plugin api" Retrieved 15 April 2016 
  33. ^ Metz, Cade 3 October 2016 "Project Mortar" Mozilla Retrieved 30 October 2016 
  34. ^ "The Go Playground" 
  35. ^ "Inside the Go Playground - The Go Blog" bloggolangorg Retrieved 2016-08-27 
  36. ^ Austin, Chad 8 January 2011 "Chad Austin: In Defense of Language Democracy Or: Why the Browser Needs a Virtual Machine" Chadaustinme Retrieved 25 April 2012 
  37. ^ Carmack, John 3 August 2012 "QuakeCon 2012" youtubecom Retrieved 26 August 2012 
  38. ^ Metz, Cade 24 June 2010 "Mozilla: Our browser will not run native code" The Register Retrieved 25 April 2012 

External links

  • Official website, Google Project
  • Official website, developers
  • Google I/O 2013 - Introduction to Portable Native Client PNaCl on YouTube
  • Google I/O 2009 Native Code for Compute Intensive Web Apps on YouTube – Technical talk at Google I/O 2009
  • A list of OSS projects ported to Native Client
  • Native Client source code in Git

Examples

  • Folding@home
  • PNaCl examples runs in Chrome 31+, PNaCl, ie no installation needed
  • Native Client SDK Gallery
  • torappinfo, vector editor, especially powerful for security printing not PNaCl
  • NACLBox, a port of DOSBox to Native Client PNaCl
  • SodaSynth, a synthesizer for Native Client not PNaCl
  • pnacl-amiga-emulator, a port of UAE, an Amiga 500 emulator
  • Abadía del crimen, a port of the SDL version of Vigasoco remake of La Abadía del Crimen to Native Client PNaCl
  • Bennugd, a port of Bennugd Videogames examples to Native Client PNaCl

google chrome native client, google native client


Google Native Client Information about

Google Native Client


  • user icon

    Google Native Client beatiful post thanks!

    29.10.2014


Google Native Client
Google Native Client
Google Native Client viewing the topic.
Google Native Client what, Google Native Client who, Google Native Client explanation

There are excerpts from wikipedia on this article and video

Random Posts

Body politic

Body politic

The body politic is a metaphor that regards a nation as a corporate entity,2 likened to a human body...
Kakamega

Kakamega

Kakamega is a town in western Kenya lying about 30 km north of the Equator It is the headquarte...
Academic year

Academic year

An academic year is a period of time which schools, colleges and universities use to measure a quant...
Lucrezia Borgia

Lucrezia Borgia

Lucrezia Borgia Italian pronunciation: luˈkrɛttsja ˈbɔrdʒa; Valencian: Lucrècia Borja luˈkrɛsia...