Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(196)

Unified Diff: native_client_sdk/src/doc/_developer.chrome.com_generated/nacl-and-pnacl.html

Issue 140993006: [NaCl SDK Docs] Check in the generated NaCl SDK Documentation. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: try without pepper_{dev,beta,stable} Created 6 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: native_client_sdk/src/doc/_developer.chrome.com_generated/nacl-and-pnacl.html
diff --git a/native_client_sdk/src/doc/_developer.chrome.com_generated/nacl-and-pnacl.html b/native_client_sdk/src/doc/_developer.chrome.com_generated/nacl-and-pnacl.html
new file mode 100644
index 0000000000000000000000000000000000000000..a49707b59c38c43a1b18a9939f61e20ac907ecc2
--- /dev/null
+++ b/native_client_sdk/src/doc/_developer.chrome.com_generated/nacl-and-pnacl.html
@@ -0,0 +1,110 @@
+{{+bindTo:partials.standard_nacl_article}}
+
+<section id="nacl-and-pnacl">
+<span id="id1"></span><h1 id="nacl-and-pnacl"><span id="id1"></span>NaCl and PNaCl</h1>
+<p>This document describes the differences between <strong>Native Client</strong> and
+<strong>Portable Native Client</strong>, and provides recommendations for when to use each.</p>
+<div class="contents local topic" id="contents">
+<ul class="small-gap">
+<li><a class="reference internal" href="#native-client-nacl" id="id3">Native Client (NaCl)</a></li>
+<li><a class="reference internal" href="#portable-native-client-pnacl" id="id4">Portable Native Client (PNaCl)</a></li>
+<li><a class="reference internal" href="#when-to-use-pnacl" id="id5">When to use PNaCl</a></li>
+<li><a class="reference internal" href="#when-to-use-nacl" id="id6">When to use NaCl</a></li>
+</ul>
+</div>
+<section id="native-client-nacl">
+<h2 id="native-client-nacl">Native Client (NaCl)</h2>
+<p>Native Client enables the execution of native code
+securely inside web applications through the use of advanced
+<a class="reference external" href="https://developers.google.com/native-client/community/talks#research">Software Fault Isolation (SFI) techniques</a>.
+Since its launch in 2011, Native Client has provided
+developers with the ability to harness a client machine&#8217;s computational power
+to a much fuller extent than traditional web technologies, by running compiled C
+and C++ code at near-native speeds and taking advantage of multiple cores with
+shared memory.</p>
+<p>While Native Client provides operating system independence, it requires
+developers to generate architecture-specific executable modules
+(<strong>nexe</strong> modules) for each hardware platform. This is not only inconvenient
+for developers, but architecture-specific machine code is not portable and thus
+not well-suited for the open web. The traditional method of application
+distribution on the web is through a self-contained bundle of HTML, CSS,
+JavaScript, and other resources (images, etc.) that can be hosted on a server
+and run inside a web browser. With this type of distribution, a website
+created today should still work years later, on all platforms.
+Architecture-specific executables are clearly not a good fit for distribution
+on the web. As a consequence, Native Client has been restricted to
+applications and browser extensions that are installed through the
+Chrome Web Store.</p>
+</section><section id="portable-native-client-pnacl">
+<h2 id="portable-native-client-pnacl">Portable Native Client (PNaCl)</h2>
+<p>PNaCl solves the portability problem by splitting the compilation process
+into two parts:</p>
+<ol class="arabic simple">
+<li>compiling the source code to a portable bitcode format, and</li>
+<li>translating the bitcode to a host-specific executable.</li>
+</ol>
+<p>PNaCl enables developers
+to distribute <strong>portable executables</strong> (<strong>pexe</strong> modules) that the hosting
+environment (e.g., the Chrome browser) can translate to native code before
+executing. This portability aligns Native Client with existing open web
+technologies such as JavaScript: A developer can distribute a <strong>pexe</strong>
+as part of an application (along with HTML, CSS, and JavaScript),
+and the user&#8217;s machine is simply able to run it.</p>
+<p>With PNaCl, a developer generates a single <strong>pexe</strong> from source code,
+rather than multiple platform-specific nexes. The <strong>pexe</strong> provides both
+architecture- and OS-independence. Since the <strong>pexe</strong> uses an abstract,
+architecture-independent format, it does not suffer from the portability
+problem described above. Future versions of hosting environments should
+have no problem executing the <strong>pexe</strong>, even on new architectures.
+Moreover, if an existing architecture is subsequently enhanced, the
+<strong>pexe</strong> doesn&#8217;t even have to be recompiled&#8212;in some cases the
+client-side translation will automatically be able to take advantage of
+the new capabilities.</p>
+<p><strong>In short, PNaCl combines the portability of existing web technologies with
+the performance and security benefits of Native Client.</strong></p>
+<p>With the advent of PNaCl, the distribution restriction of Native Client
+can be lifted. Specifically, a <strong>pexe</strong> module can be part of any web
+application&#8212;it does not have to be distributed through the Chrome Web
+Store.</p>
+<p>PNaCl is a new technology, and as such it still has a few limitations
+as compared to NaCl. These limitations are described below.</p>
+</section><section id="when-to-use-pnacl">
+<h2 id="when-to-use-pnacl">When to use PNaCl</h2>
+<p>PNaCl is the preferred toolchain for Native Client, and the only way to deploy
+Native Client modules on the open web. Unless your project is subject to one
+of the narrow limitations described below
+(see <a class="reference internal" href="#when-to-use-nacl"><em>When to use NaCl</em></a>), you should use PNaCl.</p>
+<p>Beginning with version 31, the Chrome browser supports translation of
+<strong>pexe</strong> modules and their use in web applications, without requiring
+any installation (either of a browser plugin or of the applications
+themselves). Native Client and PNaCl are open-source technologies, and
+our hope is that they will be added to other hosting platforms in the
+future.</p>
+<p>If controlled distribution through the Chrome Web Store is an important part
+of your product plan, the benefits of PNaCl are less critical for you. But
+you can still use the PNaCl toolchain and distribute your application
+through the Chrome Web Store, and thereby take advantage of the
+conveniences of PNaCl, such as not having to explicitly compile your application
+for all supported architectures.</p>
+</section><section id="when-to-use-nacl">
+<span id="id2"></span><h2 id="when-to-use-nacl"><span id="id2"></span>When to use NaCl</h2>
+<p>The limitations below apply to the current release of PNaCl. If any of
+these limitations are critical for your application, you should use
+non-portable NaCl:</p>
+<ul class="small-gap">
+<li>By its nature, PNaCl does not support architecture-specific instructions in
+an application (i.e., inline assembly). Future editions of PNaCl will
+attempt to mitigate this problem by introducing portable intrinsics for vector
+operations.</li>
+<li>Currently PNaCl only supports static linking with the <code>newlib</code>
+C standard library (the Native Client SDK provides a PNaCl port of
+<code>newlib</code>). Dynamic linking and <code>glibc</code> are not yet supported.
+Work is under way to enable dynamic linking in future versions of PNaCl.</li>
+<li>In the initial release, PNaCl does not support vector types and SIMD.</li>
+<li>In the initial release, PNaCl does not support some GNU extensions
+like taking the address of a label for computed <code>goto</code>, or nested
+functions.</li>
+</ul>
+</section></section>
+
+{{/partials.standard_nacl_article}}

Powered by Google App Engine
This is Rietveld 408576698