OLD | NEW |
1 {{+bindTo:partials.standard_nacl_article}} | 1 {{+bindTo:partials.standard_nacl_article}} |
2 | 2 |
3 <section id="technical-overview"> | 3 <section id="technical-overview"> |
4 <span id="overview"></span><h1 id="technical-overview"><span id="overview"></spa
n>Technical Overview</h1> | 4 <span id="overview"></span><h1 id="technical-overview"><span id="overview"></spa
n>Technical Overview</h1> |
5 <div class="contents local" id="contents" style="display: none"> | 5 <div class="contents local" id="contents" style="display: none"> |
6 <ul class="small-gap"> | 6 <ul class="small-gap"> |
7 <li><a class="reference internal" href="#introduction" id="id2">Introduction</a>
</li> | 7 <li><a class="reference internal" href="#introduction" id="id2">Introduction</a>
</li> |
8 <li><a class="reference internal" href="#why-use-native-client" id="id3">Why use
Native Client?</a></li> | 8 <li><a class="reference internal" href="#why-use-native-client" id="id3">Why use
Native Client?</a></li> |
9 <li><a class="reference internal" href="#common-use-cases" id="id4">Common use c
ases</a></li> | 9 <li><a class="reference internal" href="#common-use-cases" id="id4">Common use c
ases</a></li> |
10 <li><p class="first"><a class="reference internal" href="#how-native-client-work
s" id="id5">How Native Client works</a></p> | 10 <li><p class="first"><a class="reference internal" href="#how-native-client-work
s" id="id5">How Native Client works</a></p> |
11 <ul class="small-gap"> | 11 <ul class="small-gap"> |
12 <li><a class="reference internal" href="#security" id="id6">Security</a></li> | 12 <li><a class="reference internal" href="#security" id="id6">Security</a></li> |
13 <li><a class="reference internal" href="#portability" id="id7">Portability</a></
li> | 13 <li><a class="reference internal" href="#portability" id="id7">Portability</a></
li> |
14 <li><a class="reference internal" href="#toolchains" id="id8">Toolchains</a></li
> | 14 <li><a class="reference internal" href="#toolchains" id="id8">Toolchains</a></li
> |
15 </ul> | 15 </ul> |
16 </li> | 16 </li> |
17 <li><p class="first"><a class="reference internal" href="#native-client-in-a-web
-application" id="id9">Native Client in a web application</a></p> | 17 <li><p class="first"><a class="reference internal" href="#native-client-in-a-web
-application" id="id9">Native Client in a web application</a></p> |
18 <ul class="small-gap"> | 18 <ul class="small-gap"> |
19 <li><a class="reference internal" href="#pepper-plugin-api" id="id10">Pepper Plu
gin API</a></li> | 19 <li><a class="reference internal" href="#pepper-plugin-api" id="id10">Pepper Plu
gin API</a></li> |
20 </ul> | 20 </ul> |
21 </li> | 21 </li> |
22 <li><a class="reference internal" href="#versioning" id="id11">Versioning</a></l
i> | 22 <li><a class="reference internal" href="#versioning" id="id11">Versioning</a></l
i> |
23 <li><a class="reference internal" href="#where-to-start" id="id12">Where to star
t</a></li> | 23 <li><a class="reference internal" href="#where-to-start" id="id12">Where to star
t</a></li> |
24 </ul> | 24 </ul> |
25 | 25 |
26 </div><section id="introduction"> | 26 </div><h2 id="introduction">Introduction</h2> |
27 <h2 id="introduction">Introduction</h2> | |
28 <p><strong>Native Client</strong> (NaCl) is an open-source technology for runnin
g native | 27 <p><strong>Native Client</strong> (NaCl) is an open-source technology for runnin
g native |
29 compiled code in the browser, with the goal of maintaining the portability | 28 compiled code in the browser, with the goal of maintaining the portability |
30 and safety that users expect from web applications. Native Client expands web | 29 and safety that users expect from web applications. Native Client expands web |
31 programming beyond JavaScript, enabling developers to enhance their web | 30 programming beyond JavaScript, enabling developers to enhance their web |
32 applications using their preferred language. This document describes some of | 31 applications using their preferred language. This document describes some of |
33 the key benefits and common use cases of Native Client.</p> | 32 the key benefits and common use cases of Native Client.</p> |
34 <p>Google has implemented the open-source <a class="reference external" href="ht
tp://www.chromium.org/nativeclient">Native Client project</a> in the Chrome brow
ser on Windows, Mac, | 33 <p>Google has implemented the open-source <a class="reference external" href="ht
tp://www.chromium.org/nativeclient">Native Client project</a> in the Chrome brow
ser on Windows, Mac, |
35 Linux, and Chrome OS. The <a class="reference internal" href="/native-client/sdk
/download.html"><em>Native Client Software Development Kit (SDK)</em></a>, itsel
f an open-source project, lets developers create web | 34 Linux, and Chrome OS. The <a class="reference internal" href="/native-client/sdk
/download.html"><em>Native Client Software Development Kit (SDK)</em></a>, itsel
f an open-source project, lets developers create web |
36 applications that use NaCl and run in Chrome across multiple platforms.</p> | 35 applications that use NaCl and run in Chrome across multiple platforms.</p> |
37 <p>A web application that uses Native Client generally consists of a combination
of | 36 <p>A web application that uses Native Client generally consists of a combination
of |
38 JavaScript, HTML, CSS, and a NaCl module that is written in a language supported | 37 JavaScript, HTML, CSS, and a NaCl module that is written in a language supported |
39 by the SDK. The NaCl SDK currently supports C and C++; as compilers for | 38 by the SDK. The NaCl SDK currently supports C and C++; as compilers for |
40 additional languages are developed, the SDK will be updated to support those | 39 additional languages are developed, the SDK will be updated to support those |
41 languages as well.</p> | 40 languages as well.</p> |
42 <img alt="/native-client/images/web-app-with-nacl.png" src="/native-client/image
s/web-app-with-nacl.png" /> | 41 <img alt="/native-client/images/web-app-with-nacl.png" src="/native-client/image
s/web-app-with-nacl.png" /> |
43 </section><section id="why-use-native-client"> | |
44 <h2 id="why-use-native-client">Why use Native Client?</h2> | 42 <h2 id="why-use-native-client">Why use Native Client?</h2> |
45 <p>Native Client open-source technology is designed to run compiled code | 43 <p>Native Client open-source technology is designed to run compiled code |
46 securely inside a browser at near-native speeds. Native Client puts web | 44 securely inside a browser at near-native speeds. Native Client puts web |
47 applications on the same playing field as traditional (locally-run) | 45 applications on the same playing field as traditional (locally-run) |
48 software—it provides the means to fully harness the client’s computa
tional | 46 software—it provides the means to fully harness the client’s computa
tional |
49 resources for applications such as 3D games, multimedia editors, CAD modeling, | 47 resources for applications such as 3D games, multimedia editors, CAD modeling, |
50 client-side data analytics, and interactive simulations. | 48 client-side data analytics, and interactive simulations. |
51 Native Client also aims to give C and C++ (and eventually other languages) the | 49 Native Client also aims to give C and C++ (and eventually other languages) the |
52 same level of portability and safety that JavaScript provides on the web today.<
/p> | 50 same level of portability and safety that JavaScript provides on the web today.<
/p> |
53 <p>Here are a few of the key benefits that Native Client offers:</p> | 51 <p>Here are a few of the key benefits that Native Client offers:</p> |
(...skipping 12 matching lines...) Expand all Loading... |
66 <li><strong>Security:</strong> Native Client uses a double sandbox model designe
d to protect | 64 <li><strong>Security:</strong> Native Client uses a double sandbox model designe
d to protect |
67 the user’s system from malicious or buggy applications. This model offers
the | 65 the user’s system from malicious or buggy applications. This model offers
the |
68 safety of traditional web applications without sacrificing performance and | 66 safety of traditional web applications without sacrificing performance and |
69 without requiring users to install a plugin.</li> | 67 without requiring users to install a plugin.</li> |
70 <li><strong>Performance:</strong> Native Client allows web applications to run a
t speeds | 68 <li><strong>Performance:</strong> Native Client allows web applications to run a
t speeds |
71 comparable to desktop applications (within 5-15% of native speed). | 69 comparable to desktop applications (within 5-15% of native speed). |
72 Native Client also allows applications to harness all available CPU cores via | 70 Native Client also allows applications to harness all available CPU cores via |
73 a threading API; this enables demanding applications such as console-quality | 71 a threading API; this enables demanding applications such as console-quality |
74 games to run inside the browser.</li> | 72 games to run inside the browser.</li> |
75 </ul> | 73 </ul> |
76 </section><section id="common-use-cases"> | |
77 <h2 id="common-use-cases">Common use cases</h2> | 74 <h2 id="common-use-cases">Common use cases</h2> |
78 <p>Typical use cases for Native Client include the following:</p> | 75 <p>Typical use cases for Native Client include the following:</p> |
79 <ul class="small-gap"> | 76 <ul class="small-gap"> |
80 <li><strong>Existing software components:</strong> With support for C and C++, N
ative | 77 <li><strong>Existing software components:</strong> With support for C and C++, N
ative |
81 Client enables you to reuse existing software modules in | 78 Client enables you to reuse existing software modules in |
82 web applications—you don’t need to rewrite and debug code | 79 web applications—you don’t need to rewrite and debug code |
83 that’s already proven to work well.</li> | 80 that’s already proven to work well.</li> |
84 <li><strong>Legacy desktop applications:</strong> Native Client provides a smoot
h migration | 81 <li><strong>Legacy desktop applications:</strong> Native Client provides a smoot
h migration |
85 path from desktop applications to the web. You can port and recompile existing | 82 path from desktop applications to the web. You can port and recompile existing |
86 code for the computation engine of your application directly to Native Client, | 83 code for the computation engine of your application directly to Native Client, |
(...skipping 14 matching lines...) Expand all Loading... |
101 access low-latency audio, networking APIs, and OpenGL ES with programmable | 98 access low-latency audio, networking APIs, and OpenGL ES with programmable |
102 shaders. Native Client is a natural fit for running a physics engine or | 99 shaders. Native Client is a natural fit for running a physics engine or |
103 artificial intelligence module that powers a sophisticated web game. | 100 artificial intelligence module that powers a sophisticated web game. |
104 Native Client also enables applications to run unchanged across | 101 Native Client also enables applications to run unchanged across |
105 many platforms.</li> | 102 many platforms.</li> |
106 <li><strong>Any application that requires acceleration</strong>: Native Client f
its seamlessly | 103 <li><strong>Any application that requires acceleration</strong>: Native Client f
its seamlessly |
107 into web applications—it’s up to you to decide to what extent to use
it. | 104 into web applications—it’s up to you to decide to what extent to use
it. |
108 Use of Native Client covers the full spectrum from complete applications to | 105 Use of Native Client covers the full spectrum from complete applications to |
109 small optimized routines that accelerate vital parts of web apps.</li> | 106 small optimized routines that accelerate vital parts of web apps.</li> |
110 </ul> | 107 </ul> |
111 </section><section id="how-native-client-works"> | 108 <h2 id="how-native-client-works"><span id="link-how-nacl-works"></span>How Nativ
e Client works</h2> |
112 <span id="link-how-nacl-works"></span><h2 id="how-native-client-works"><span id=
"link-how-nacl-works"></span>How Native Client works</h2> | |
113 <p>Native Client is an umbrella name for a set of interrelated software componen
ts | 109 <p>Native Client is an umbrella name for a set of interrelated software componen
ts |
114 that work together to provide a way to develop C/C++ applications and run them | 110 that work together to provide a way to develop C/C++ applications and run them |
115 securely on the web.</p> | 111 securely on the web.</p> |
116 <p>At a high level, Native Client consists of:</p> | 112 <p>At a high level, Native Client consists of:</p> |
117 <ul class="small-gap"> | 113 <ul class="small-gap"> |
118 <li><strong>Toolchains</strong>: collections of development tools (compilers, li
nkers, etc.) | 114 <li><strong>Toolchains</strong>: collections of development tools (compilers, li
nkers, etc.) |
119 that transform C/C++ code to Native Client modules.</li> | 115 that transform C/C++ code to Native Client modules.</li> |
120 <li><strong>Runtime components</strong>: components embedded in the browser or o
ther | 116 <li><strong>Runtime components</strong>: components embedded in the browser or o
ther |
121 host platforms that allow execution of Native Client modules | 117 host platforms that allow execution of Native Client modules |
122 securely and efficiently.</li> | 118 securely and efficiently.</li> |
123 </ul> | 119 </ul> |
124 <p>The following diagram shows how these components interact:</p> | 120 <p>The following diagram shows how these components interact:</p> |
125 <img alt="/native-client/images/nacl-pnacl-component-diagram.png" src="/native-c
lient/images/nacl-pnacl-component-diagram.png" /> | 121 <img alt="/native-client/images/nacl-pnacl-component-diagram.png" src="/native-c
lient/images/nacl-pnacl-component-diagram.png" /> |
126 <p>The left side of the diagram shows how to use Portable Native Client | 122 <p>The left side of the diagram shows how to use Portable Native Client |
127 (PNaCl, pronounced “pinnacle”). Developers use the PNaCl toolchain | 123 (PNaCl, pronounced “pinnacle”). Developers use the PNaCl toolchain |
128 to produce a single, portable (<strong>pexe</strong>) module. At runtime, a tran
slator | 124 to produce a single, portable (<strong>pexe</strong>) module. At runtime, a tran
slator |
129 built into the browser translates the pexe into native code for the | 125 built into the browser translates the pexe into native code for the |
130 relevant client architecture.</p> | 126 relevant client architecture.</p> |
131 <p>The right side of the diagram shows how to use traditional (non-portable) | 127 <p>The right side of the diagram shows how to use traditional (non-portable) |
132 Native Client. Developers use a nacl-gcc based toolchain to produce multiple | 128 Native Client. Developers use a nacl-gcc based toolchain to produce multiple |
133 architecture-dependent (<strong>nexe</strong>) modules, which are packaged into
an | 129 architecture-dependent (<strong>nexe</strong>) modules, which are packaged into
an |
134 application. At runtime, the browser decides which nexe to load based | 130 application. At runtime, the browser decides which nexe to load based |
135 on the architecture of the client machine.</p> | 131 on the architecture of the client machine.</p> |
136 <section id="security"> | |
137 <h3 id="security">Security</h3> | 132 <h3 id="security">Security</h3> |
138 <p>Since Native Client permits the execution of native code on client machines, | 133 <p>Since Native Client permits the execution of native code on client machines, |
139 special security measures have to be implemented:</p> | 134 special security measures have to be implemented:</p> |
140 <ul class="small-gap"> | 135 <ul class="small-gap"> |
141 <li>The NaCl sandbox ensures that code accesses system resources only through | 136 <li>The NaCl sandbox ensures that code accesses system resources only through |
142 safe, whitelisted APIs, and operates within its limits without attempting to | 137 safe, whitelisted APIs, and operates within its limits without attempting to |
143 interfere with other code running either within the browser or outside it.</li> | 138 interfere with other code running either within the browser or outside it.</li> |
144 <li>The NaCl validator statically analyzes code prior to running it | 139 <li>The NaCl validator statically analyzes code prior to running it |
145 to make sure it only uses code and data patterns that are permitted and safe.</l
i> | 140 to make sure it only uses code and data patterns that are permitted and safe.</l
i> |
146 </ul> | 141 </ul> |
147 <p>The above security measures are in addition to the existing sandbox in the | 142 <p>The above security measures are in addition to the existing sandbox in the |
148 Chrome browser—the Native Client module always executes in a process with | 143 Chrome browser—the Native Client module always executes in a process with |
149 restricted permissions. The only interaction between this process and the | 144 restricted permissions. The only interaction between this process and the |
150 outside world is through sanctioned browser interfaces. Because of the | 145 outside world is through sanctioned browser interfaces. Because of the |
151 combination of the NaCl sandbox and the Chrome sandbox, we say that | 146 combination of the NaCl sandbox and the Chrome sandbox, we say that |
152 Native Client employs a double sandbox design.</p> | 147 Native Client employs a double sandbox design.</p> |
153 </section><section id="portability"> | |
154 <h3 id="portability">Portability</h3> | 148 <h3 id="portability">Portability</h3> |
155 <p>Portable Native Client (PNaCl, prounounced “pinnacle”) employs st
ate-of-the-art | 149 <p>Portable Native Client (PNaCl, prounounced “pinnacle”) employs st
ate-of-the-art |
156 compiler technology to compile C/C++ source code to a portable bitcode | 150 compiler technology to compile C/C++ source code to a portable bitcode |
157 executable (<strong>pexe</strong>). PNaCl bitcode is an OS- and architecture-ind
ependent | 151 executable (<strong>pexe</strong>). PNaCl bitcode is an OS- and architecture-ind
ependent |
158 format that can be freely distributed on the web and <a class="reference interna
l" href="#link-nacl-in-web-apps"><em>embedded in web | 152 format that can be freely distributed on the web and <a class="reference interna
l" href="#link-nacl-in-web-apps"><em>embedded in web |
159 applications</em></a>.</p> | 153 applications</em></a>.</p> |
160 <p>The PNaCl translator is a component embedded in the Chrome browser; its task
is | 154 <p>The PNaCl translator is a component embedded in the Chrome browser; its task
is |
161 to run pexe modules. Internally, the translator compiles a pexe to a nexe | 155 to run pexe modules. Internally, the translator compiles a pexe to a nexe |
162 (a native executable for the client platform’s architecture), and then exe
cutes | 156 (a native executable for the client platform’s architecture), and then exe
cutes |
163 the nexe within the Native Client sandbox as described above. It also uses | 157 the nexe within the Native Client sandbox as described above. It also uses |
164 intelligent caching to avoid re-compiling the pexe if it was previously compiled | 158 intelligent caching to avoid re-compiling the pexe if it was previously compiled |
165 on the client’s browser.</p> | 159 on the client’s browser.</p> |
166 <p>Native Client also supports the execution of nexe modules directly in the | 160 <p>Native Client also supports the execution of nexe modules directly in the |
167 browser. However, since nexes contain architecture-specific machine code, | 161 browser. However, since nexes contain architecture-specific machine code, |
168 they are not allowed to be distributed on the open web—they can only be | 162 they are not allowed to be distributed on the open web—they can only be |
169 used as part of applications and extensions that are installed from the | 163 used as part of applications and extensions that are installed from the |
170 Chrome Web Store.</p> | 164 Chrome Web Store.</p> |
171 <p>For more details on the difference between NaCl and PNaCl, see | 165 <p>For more details on the difference between NaCl and PNaCl, see |
172 <a class="reference internal" href="/native-client/nacl-and-pnacl.html"><em>NaCl
and PNaCl</em></a>.</p> | 166 <a class="reference internal" href="/native-client/nacl-and-pnacl.html"><em>NaCl
and PNaCl</em></a>.</p> |
173 </section><section id="toolchains"> | 167 <h3 id="toolchains"><span id="id1"></span>Toolchains</h3> |
174 <span id="id1"></span><h3 id="toolchains"><span id="id1"></span>Toolchains</h3> | |
175 <p>A toolchain is a set of tools used to create an application from a set of | 168 <p>A toolchain is a set of tools used to create an application from a set of |
176 source files. In the case of Native Client, a toolchain consists of a compiler, | 169 source files. In the case of Native Client, a toolchain consists of a compiler, |
177 linker, assembler and other tools that are used to convert an | 170 linker, assembler and other tools that are used to convert an |
178 application written in C/C++ into a module that is loadable by the browser.</p> | 171 application written in C/C++ into a module that is loadable by the browser.</p> |
179 <p>The Native Client SDK provides two toolchains:</p> | 172 <p>The Native Client SDK provides two toolchains:</p> |
180 <ul class="small-gap"> | 173 <ul class="small-gap"> |
181 <li>a <strong>PNaCl toolchain</strong> for generating portable NaCl modules (pex
e files)</li> | 174 <li>a <strong>PNaCl toolchain</strong> for generating portable NaCl modules (pex
e files)</li> |
182 <li>a <strong>gcc-based toolchain (nacl-gcc)</strong> for generating non-portabl
e NaCl modules | 175 <li>a <strong>gcc-based toolchain (nacl-gcc)</strong> for generating non-portabl
e NaCl modules |
183 (nexe files)</li> | 176 (nexe files)</li> |
184 </ul> | 177 </ul> |
185 <p>The PNaCl toolchain is recommended for most applications. The nacl-gcc | 178 <p>The PNaCl toolchain is recommended for most applications. The nacl-gcc |
186 toolchain should only be used for applications that will not be distributed | 179 toolchain should only be used for applications that will not be distributed |
187 on the open web.</p> | 180 on the open web.</p> |
188 </section></section><section id="native-client-in-a-web-application"> | 181 <h2 id="native-client-in-a-web-application"><span id="link-nacl-in-web-apps"></s
pan>Native Client in a web application</h2> |
189 <span id="link-nacl-in-web-apps"></span><h2 id="native-client-in-a-web-applicati
on"><span id="link-nacl-in-web-apps"></span>Native Client in a web application</
h2> | |
190 <p id="application-files">A Native Client application consists of a set of files
:</p> | 182 <p id="application-files">A Native Client application consists of a set of files
:</p> |
191 <ul class="small-gap"> | 183 <ul class="small-gap"> |
192 <li><strong>HTML</strong>, <strong>CSS</strong>, and <strong>JavaScript</strong>
files, as in any modern web | 184 <li><strong>HTML</strong>, <strong>CSS</strong>, and <strong>JavaScript</strong>
files, as in any modern web |
193 application. The JavaScript code is responsible for communicating with the | 185 application. The JavaScript code is responsible for communicating with the |
194 NaCl module.</li> | 186 NaCl module.</li> |
195 <li>A <strong>pexe</strong> (portable NaCl) file. This module uses the <a class=
"reference internal" href="#link-pepper"><em>Pepper</em></a> API, which provides
the bridge to JavaScript and | 187 <li>A <strong>pexe</strong> (portable NaCl) file. This module uses the <a class=
"reference internal" href="#link-pepper"><em>Pepper</em></a> API, which provides
the bridge to JavaScript and |
196 browser resources.</li> | 188 browser resources.</li> |
197 <li>A Native Client <strong>manifest</strong> file that specifies the pexe to lo
ad, along with | 189 <li>A Native Client <strong>manifest</strong> file that specifies the pexe to lo
ad, along with |
198 some loading options. This manifest file is embedded into the HTML page | 190 some loading options. This manifest file is embedded into the HTML page |
199 through an <code><embed></code> tag, as shown in the figure below.</li> | 191 through an <code><embed></code> tag, as shown in the figure below.</li> |
200 </ul> | 192 </ul> |
201 <img alt="/native-client/images/nacl-in-a-web-app.png" src="/native-client/image
s/nacl-in-a-web-app.png" /> | 193 <img alt="/native-client/images/nacl-in-a-web-app.png" src="/native-client/image
s/nacl-in-a-web-app.png" /> |
202 <p>For more details, see <a class="reference internal" href="/native-client/devg
uide/coding/application-structure.html"><em>Application Structure</em></a>.</p> | 194 <p>For more details, see <a class="reference internal" href="/native-client/devg
uide/coding/application-structure.html"><em>Application Structure</em></a>.</p> |
203 <section id="pepper-plugin-api"> | 195 <h3 id="pepper-plugin-api"><span id="link-pepper"></span>Pepper Plugin API</h3> |
204 <span id="link-pepper"></span><h3 id="pepper-plugin-api"><span id="link-pepper">
</span>Pepper Plugin API</h3> | |
205 <p>The Pepper Plugin API (PPAPI), called <strong>Pepper</strong> for convenience
, is an | 196 <p>The Pepper Plugin API (PPAPI), called <strong>Pepper</strong> for convenience
, is an |
206 open-source, cross-platform C/C++ API for web browser plugins. From the point | 197 open-source, cross-platform C/C++ API for web browser plugins. From the point |
207 of view of Native Client, Pepper allows a C/C++ module to communicate with | 198 of view of Native Client, Pepper allows a C/C++ module to communicate with |
208 the hosting browser and get access to system-level functions in a safe and | 199 the hosting browser and get access to system-level functions in a safe and |
209 portable way. One of the security constraints in Native Client is that modules | 200 portable way. One of the security constraints in Native Client is that modules |
210 cannot make any OS-level calls directly. Pepper provides analogous APIs that | 201 cannot make any OS-level calls directly. Pepper provides analogous APIs that |
211 modules can target instead.</p> | 202 modules can target instead.</p> |
212 <p>You can use the Pepper APIs to gain access to the full array of browser | 203 <p>You can use the Pepper APIs to gain access to the full array of browser |
213 capabilities, including:</p> | 204 capabilities, including:</p> |
214 <ul class="small-gap"> | 205 <ul class="small-gap"> |
215 <li><a class="reference internal" href="/native-client/devguide/coding/message-s
ystem.html"><em>Talking to the JavaScript code in your application</em></a> from
the C++ code in your NaCl module.</li> | 206 <li><a class="reference internal" href="/native-client/devguide/coding/message-s
ystem.html"><em>Talking to the JavaScript code in your application</em></a> from
the C++ code in your NaCl module.</li> |
216 <li><a class="reference internal" href="/native-client/devguide/coding/file-io.h
tml"><em>Doing file I/O</em></a>.</li> | 207 <li><a class="reference internal" href="/native-client/devguide/coding/file-io.h
tml"><em>Doing file I/O</em></a>.</li> |
217 <li><a class="reference internal" href="/native-client/devguide/coding/audio.htm
l"><em>Playing audio</em></a>.</li> | 208 <li><a class="reference internal" href="/native-client/devguide/coding/audio.htm
l"><em>Playing audio</em></a>.</li> |
218 <li><a class="reference internal" href="/native-client/devguide/coding/3D-graphi
cs.html"><em>Rendering 3D graphics</em></a>.</li> | 209 <li><a class="reference internal" href="/native-client/devguide/coding/3D-graphi
cs.html"><em>Rendering 3D graphics</em></a>.</li> |
219 </ul> | 210 </ul> |
220 <p>Pepper includes both a C API and a C++ API. The C++ API is a set of bindings | 211 <p>Pepper includes both a C API and a C++ API. The C++ API is a set of bindings |
221 written on top of the C API. For additional information about Pepper, see | 212 written on top of the C API. For additional information about Pepper, see |
222 <a class="reference external" href="http://code.google.com/p/ppapi/wiki/Concepts
">Pepper Concepts</a>.</p> | 213 <a class="reference external" href="http://code.google.com/p/ppapi/wiki/Concepts
">Pepper Concepts</a>.</p> |
223 </section></section><section id="versioning"> | |
224 <h2 id="versioning">Versioning</h2> | 214 <h2 id="versioning">Versioning</h2> |
225 <p>Chrome is released on a six week cycle, and developer versions of Chrome are | 215 <p>Chrome is released on a six week cycle, and developer versions of Chrome are |
226 pushed to the public beta channel three weeks before each release. As with any | 216 pushed to the public beta channel three weeks before each release. As with any |
227 software, each release of Chrome may include changes to Native Client and the | 217 software, each release of Chrome may include changes to Native Client and the |
228 Pepper interfaces that may require modification to existing applications. | 218 Pepper interfaces that may require modification to existing applications. |
229 However, modules compiled for one version of Pepper/Chrome should work with | 219 However, modules compiled for one version of Pepper/Chrome should work with |
230 subsequent versions of Pepper/Chrome. The SDK includes multiple versions of the | 220 subsequent versions of Pepper/Chrome. The SDK includes multiple versions of the |
231 Pepper APIs to help developers make adjustments to API changes and take | 221 Pepper APIs to help developers make adjustments to API changes and take |
232 advantage of new features: <a class="reference external" href="/native-client/pe
pper_stable">stable</a>, <a class="reference external" href="/native-client/pepp
er_beta">beta</a> and <a class="reference external" href="/native-client/pepper_
dev">dev</a>.</p> | 222 advantage of new features: <a class="reference external" href="/native-client/pe
pper_stable">stable</a>, <a class="reference external" href="/native-client/pepp
er_beta">beta</a> and <a class="reference external" href="/native-client/pepper_
dev">dev</a>.</p> |
233 </section><section id="where-to-start"> | |
234 <h2 id="where-to-start">Where to start</h2> | 223 <h2 id="where-to-start">Where to start</h2> |
235 <p>The <a class="reference internal" href="/native-client/quick-start.html"><em>
Quick Start</em></a> document provides links to downloads and | 224 <p>The <a class="reference internal" href="/native-client/quick-start.html"><em>
Quick Start</em></a> document provides links to downloads and |
236 documentation that should help you get started with developing and distributing | 225 documentation that should help you get started with developing and distributing |
237 Native Client applications.</p> | 226 Native Client applications.</p> |
238 </section></section> | 227 </section> |
239 | 228 |
240 {{/partials.standard_nacl_article}} | 229 {{/partials.standard_nacl_article}} |
OLD | NEW |