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

Side by Side Diff: native_client_sdk/src/doc/faq.rst

Issue 382603004: NaCl documentation: miscellaneous FAQ improvements (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Address binji's comments. Created 6 years, 5 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « native_client_sdk/doc_generated/faq.html ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 ########################## 1 ##########################
2 Frequently Asked Questions 2 Frequently Asked Questions
3 ########################## 3 ##########################
4 4
5 .. contents:: 5 .. contents::
6 :local: 6 :local:
7 :backlinks: none 7 :backlinks: none
8 :depth: 2 8 :depth: 2
9 9
10 This document answers some frequently asked questions about Native 10 This document answers some frequently asked questions about Native
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
63 .. TODO Expand on the PNaCl performance section in another document, and 63 .. TODO Expand on the PNaCl performance section in another document, and
64 .. link to it here. How does one profile PNaCl code? What are common 64 .. link to it here. How does one profile PNaCl code? What are common
65 .. causes of slowness? How can code be made faster? What's the best way 65 .. causes of slowness? How can code be made faster? What's the best way
66 .. to use Pepper's asynchronous APIs? What do I need to know about 66 .. to use Pepper's asynchronous APIs? What do I need to know about
67 .. threads and inter-thread communications? Can I use SIMD or other 67 .. threads and inter-thread communications? Can I use SIMD or other
68 .. processor-specific instructions? What about the GPU? 68 .. processor-specific instructions? What about the GPU?
69 69
70 For more details, refer to the :doc:`history behind and comparison of 70 For more details, refer to the :doc:`history behind and comparison of
71 NaCl and PNaCl <nacl-and-pnacl>`. 71 NaCl and PNaCl <nacl-and-pnacl>`.
72 72
73 When should I use Native Client? 73 When should I use Portable Native Client instead of Native Client?
74 -------------------------------- 74 ------------------------------------------------------------------
75
76 See :doc:`NaCl and PNaCl <nacl-and-pnacl>`. In short: PNaCl works on the Open
77 Web platform delivered by Chrome whereas NaCl only works on the Chrome Web
78 Store.
79
80 When should I use Portable Native Client / Native Client?
81 ---------------------------------------------------------
75 82
76 The following are some typical use cases. For details, see the 83 The following are some typical use cases. For details, see the
77 :doc:`Technical Overview <overview>`. 84 :doc:`Technical Overview <overview>`.
78 85
79 * Porting existing software components for use in a web application. 86 * Porting existing applications or software components, written in C/C++ or
80 * Porting legacy desktop applications. 87 virtual machines written in C/C++, for use in a web application.
81 * Handling browser-side encryption and decryption for an enterprise 88 * Using compute-intensive applications, including threads and SIMD, such as:
82 application.
83 * Handling multimedia for a web application.
84 * Handling various aspects of web-based games, including physics engines
85 and AI.
86 89
87 Native Client is a versatile technology; we expect that it will also be 90 * Scientific computing.
91 * Handling multimedia for a web application.
92 * Various aspects of web-based games, including physics engines and AI.
93
94 * Running untrusted code on a server or within an application (such as a plugin
95 system for a game).
96
97 Portable Native Client and Native Client are versatile technologies which are
88 used in many other contexts outside of Chrome. 98 used in many other contexts outside of Chrome.
89 99
90 When should I use Portable Native Client?
91 -----------------------------------------
92
93 See :doc:`NaCl and PNaCl <nacl-and-pnacl>`. In short: PNaCl works on the
94 open web whereas NaCl only works on the Chrome Web Store.
95
96 How fast does code run in Portable Native Client? 100 How fast does code run in Portable Native Client?
97 ------------------------------------------------- 101 -------------------------------------------------
98 102
99 Fast! The SPEC2k benchmarks (C, C++ and floating-point benchmarks) give 103 Fast! The SPEC2k benchmarks (C, C++ and floating-point benchmarks) give
100 the following overhead for optimized PNaCl compared to regular optimized 104 the following overhead for optimized PNaCl compared to regular optimized
101 LLVM: 105 LLVM:
102 106
103 +--------+-----+ 107 +--------+-----+
104 | x86-32 | 15% | 108 | x86-32 | 15% |
105 +--------+-----+ 109 +--------+-----+
106 | x86-64 | 25% | 110 | x86-64 | 25% |
107 +--------+-----+ 111 +--------+-----+
108 | ARM | 10% | 112 | ARM | 10% |
109 +--------+-----+ 113 +--------+-----+
110 114
111 Note that benchmark performance is sometimes bimodal, so different use 115 Note that benchmark performance is sometimes bimodal, so different use
112 cases are likely to achieve better or worse performance than the above 116 cases are likely to achieve better or worse performance than the above
113 averages. For example floating-point heavy code usually exhibits much 117 averages. For example floating-point heavy code usually exhibits much
114 lower overheads whereas very branch-heavy code often performs worse. 118 lower overheads whereas very branch-heavy code often performs worse.
115 119
116 Note that PNaCl supports performance features that are often used in 120 Note that PNaCl supports performance features that are often used in
117 native code such as :ref:`threading <language_support_threading>` and 121 native code such as :ref:`threading <language_support_threading>` and
118 :ref:`Portable SIMD Vectors <portable_simd_vectors>`. 122 :ref:`Portable SIMD Vectors <portable_simd_vectors>`.
119 123
120 For details, see: 124 For details, see:
121 125
122 * `Adapting Software Fault Isolation to Contemporary CPU Architectures 126 * `PNaCl SIMD: Speed on the Web`_.
123 <https://nativeclient.googlecode.com/svn/data/site/NaCl_SFI.pdf>`_ (PDF). 127 * `Adapting Software Fault Isolation to Contemporary CPU Architectures`_ (PDF).
124 * `Native Client: A Sandbox for Portable, Untrusted x86 Code 128 * `Native Client: A Sandbox for Portable, Untrusted x86 Code`_ (PDF).
125 <http://research.google.com/pubs/pub34913.html>`_ (PDF).
126 129
127 If your code isn't performing as close to native speed as you'd expect, 130 If your code isn't performing as close to native speed as you'd expect,
128 :doc:`let us know <help>`! 131 :doc:`let us know <help>`!
129 132
130 .. TODO Link to the non-existent performance page! (see above todo). 133 .. TODO Link to the non-existent performance page! (see above todo).
131 134
132 Why use Portable Native Client instead of *<technology X>*? 135 Why use Portable Native Client instead of *<technology X>*?
133 ----------------------------------------------------------- 136 -----------------------------------------------------------
134 137
135 Many other technologies can be compared to Portable Native Client: 138 Many other technologies can be compared to Portable Native Client:
(...skipping 15 matching lines...) Expand all
151 or otherwise bypass the JavaScript security model. For more information, 154 or otherwise bypass the JavaScript security model. For more information,
152 see later sections of this FAQ. 155 see later sections of this FAQ.
153 156
154 157
155 Development Environments and Tools 158 Development Environments and Tools
156 ================================== 159 ==================================
157 160
158 What development environment and development operating system do you recommend? 161 What development environment and development operating system do you recommend?
159 ------------------------------------------------------------------------------- 162 -------------------------------------------------------------------------------
160 163
161 You can develop on Windows, Mac, or Linux, and the resulting Native 164 You can develop on Windows, Mac, or Linux, and the resulting Native Client or
162 Client or Portable Native Client application will run inside the Google 165 Portable Native Client application will run inside the Google Chrome browser on
163 Chrome browser on all those platforms as well as ChromeOS. You can also 166 all those platforms as well as ChromeOS. You can also develop on ChromeOS with
164 develop on ChromeOS with Crouton_, and we're working on 167 Crouton_ or our `experimental development environment which runs within NaCl`_,
165 self-hosting a full development environment on Portable Native Client. 168 and we're working on self-hosting a full development environment on Portable
169 Native Client.
166 170
167 Any editor+shell combination should work as well as IDEs like Eclipse, 171 Any editor+shell combination should work as well as IDEs like Eclipse,
168 Visual Studio with the :doc:`Native Client Add-In 172 Visual Studio with the :doc:`Native Client Add-In
169 <devguide/devcycle/vs-addin>` on Windows, or Xcode on Mac OSX. 173 <devguide/devcycle/vs-addin>` on Windows, or Xcode on Mac OSX.
170 174
171 I'm not familiar with native development tools, can I still use the Native Clien t SDK? 175 I'm not familiar with native development tools, can I still use the Native Clien t SDK?
172 -------------------------------------------------------------------------------- ------ 176 -------------------------------------------------------------------------------- ------
173 177
174 You may find our :doc:`Tutorial <devguide/tutorial/index>` and :doc:`Building 178 You may find our :doc:`Tutorial <devguide/tutorial/index>` and :doc:`Building
175 instructions <devguide/devcycle/building>` useful, and you can look at 179 instructions <devguide/devcycle/building>` useful, and you can look at
176 the code and Makefiles for the SDK examples to understand how the 180 the code and Makefiles for the SDK examples to understand how the
177 examples are built and run. 181 examples are built and run.
178 182
179 You'll need to learn how to use some tools (like GCC, LLVM, make, 183 You'll need to learn how to use some tools (like GCC, LLVM, make, Eclipse,
180 Eclipse, Visual Studio, or Xcode) before you can get very far with the 184 Visual Studio, or Xcode) before you can get very far with the SDK. Try seaching
181 SDK. Try seaching for an `introduction to GCC 185 for an `introduction to GCC`_.
182 <https://www.google.com/search?q=gcc+introduction>`_.
183 186
184 187
185 Openness, and Supported Architectures and Languages 188 Openness, and Supported Architectures and Languages
186 =================================================== 189 ===================================================
187 190
188 Is Native Client open? Is it a standard? 191 Is Native Client open? Is it a standard?
189 ---------------------------------------- 192 ----------------------------------------
190 193
191 Native Client is completely open: the executable format is open and the 194 Native Client is completely open: the executable format is open and the
192 `source code is open <nacl_project_>`_. Right 195 `source code is open <nacl_project_>`_. Right
(...skipping 24 matching lines...) Expand all
217 With Portable Native Client we deliver a system that has comparable 220 With Portable Native Client we deliver a system that has comparable
218 portability to JavaScript and can adapt to new instruction set 221 portability to JavaScript and can adapt to new instruction set
219 architectures without requiring recompilation. The web is better when 222 architectures without requiring recompilation. The web is better when
220 it's platform-independent, and we'd like it to stay that way. 223 it's platform-independent, and we'd like it to stay that way.
221 224
222 .. _other_languages: 225 .. _other_languages:
223 226
224 Do I have to use C or C++? I'd really like to use another language. 227 Do I have to use C or C++? I'd really like to use another language.
225 ------------------------------------------------------------------- 228 -------------------------------------------------------------------
226 229
227 Right now only C and C++ are supported directly by the toolchain in the 230 Right now only C and C++ are supported directly by the toolchain in the SDK. C#
228 SDK. C# and other languages in the .NET family are supported via the 231 and other languages in the .NET family are supported via the `Mono port`_ for
229 `Mono port <https://github.com/elijahtaylor/mono>`_ for Native 232 Native Client. Moreover, there are several ongoing projects to support
230 Client. Moreover, there are several ongoing projects to support 233 additional language runtimes (e.g. `naclports supports Lua, Python and Ruby`_)
231 additional language runtimes (e.g. `naclports supports Lua, Python and 234 as well as to compile more languages to LLVM's intermediate representation
232 Ruby 235 (e.g. support Halide_, Haskell with GHC_ or support Fortran with flang_), or
233 <https://code.google.com/p/naclports/source/browse#svn%2Ftrunk%2Fsrc%2Fexamples% 2Ftools>`_)
234 as well as to compile more languages to LLVM's intermediate
235 representation (e.g. support Haskell with `GHC
236 <http://www.haskell.org/ghc/docs/latest/html/users_guide/code-generators.html>`_
237 or support Fortran with `flang
238 <https://flang-gsoc.blogspot.ie/2013/09/end-of-gsoc-report.html>`_), or
239 transpile languages to C/C++ (source-to-source compilation). 236 transpile languages to C/C++ (source-to-source compilation).
240 237
241 If you're interested in getting other languages working, please contact the 238 If you're interested in getting other languages working, please contact the
242 Native Client team by way of the `native-client-discuss mailing list 239 Native Client team by way of the native-client-discuss_ mailing list.
243 <https://groups.google.com/group/native-client-discuss>`_.
244 240
245 Will you only support Chrome? What about other browsers? 241 Do you only support Chrome? What about other browsers?
246 -------------------------------------------------------- 242 ------------------------------------------------------
247 243
248 We aim to support multiple browsers. However, a number of features that 244 We aim to support multiple browsers. However, a number of features that
249 we consider requirements for a production-quality system that keeps the 245 we consider requirements for a production-quality system that keeps the
250 user safe are difficult to implement without help from the 246 user safe are difficult to implement without help from the
251 browser. Specific examples are an out-of-process plugin architecture and 247 browser. Specific examples are an out-of-process plugin architecture and
252 appropriate interfaces for integrated 3D graphics. We have worked 248 appropriate interfaces for integrated 3D graphics. We have worked
253 closely with Chromium developers to deliver these features and we are 249 closely with Chromium developers to deliver these features and we are
254 eager to collaborate with developers from other browsers. 250 eager to collaborate with developers from other browsers.
255 251
256 What's the difference between NPAPI and Pepper? 252 What's the difference between NPAPI and Pepper?
257 ----------------------------------------------- 253 -----------------------------------------------
258 254
259 :doc:`Pepper <pepper_stable/index>` (also known as PPAPI) is a new API that 255 :doc:`Pepper <pepper_stable/index>` (also known as PPAPI) is a new API that
260 lets Native Client modules communicate with the browser. Pepper supports 256 lets Native Client modules communicate with the browser. Pepper supports
261 various features that don't have robust support in NPAPI, such as event 257 various features that don't have robust support in NPAPI, such as event
262 handling, out-of-process plugins, and asynchronous interfaces. Native 258 handling, out-of-process plugins, and asynchronous interfaces. Native
263 Client has transitioned from using NPAPI to using Pepper. 259 Client has transitioned from using NPAPI to using Pepper.
264 260
265 Is NPAPI part of the Native Client SDK? 261 Is NPAPI part of the Native Client SDK?
266 --------------------------------------- 262 ---------------------------------------
267 263
268 NPAPI is not supported by the Native Client SDK, and is `deprecated in 264 NPAPI is not supported by the Native Client SDK, and is `deprecated in Chrome`_.
269 Chrome
270 <http://blog.chromium.org/2013/09/saying-goodbye-to-our-old-friend-npapi.html>`_ .
271 265
272 Does Native Client support SIMD vector instructions? 266 Does Native Client support SIMD vector instructions?
273 ---------------------------------------------------- 267 ----------------------------------------------------
274 268
275 Native Client currently supports SSE on x86 and NEON on ARM. Support for 269 Native Client currently supports SSE on x86 and NEON on ARM. Support for
276 AVX on x86 is under way. 270 AVX on x86 is under way.
277 271
278 Portable Native Client supports portable SIMD vectors, as detailed in 272 Portable Native Client supports portable SIMD vectors, as detailed in
279 :ref:`Portable SIMD Vectors <portable_simd_vectors>`. 273 :ref:`Portable SIMD Vectors <portable_simd_vectors>`.
280 274
281 Can I use Native Client for 3D graphics? 275 Can I use Native Client for 3D graphics?
282 ---------------------------------------- 276 ----------------------------------------
283 277
284 Yes. Native Client supports `OpenGL ES 2.0 278 Yes. Native Client supports `OpenGL ES 2.0`_.
285 <https://www.khronos.org/opengles/>`_.
286 279
287 To alert the user regarding their hardware platform's 3D feature set 280 To alert the user regarding their hardware platform's 3D feature set
288 before loading a large NaCl application, see :doc:`Vetting the driver in 281 before loading a large NaCl application, see :doc:`Vetting the driver in
289 Javascript <devguide/coding/3D-graphics>`. 282 Javascript <devguide/coding/3D-graphics>`.
290 283
291 Some GL extensions are exposed to Native Client applications, see the 284 Some GL extensions are exposed to Native Client applications, see the `GLES2
292 `GLES2 file 285 file`_. This file is part of the GL wrapper supplied by the library
293 <https://src.chromium.org/viewvc/chrome/trunk/src/ppapi/lib/gl/gles2/gles2.c>`_. 286 ``ppapi_gles2`` which you'll want to include in your project. In most cases
294 This file is part of the GL wrapper supplied by the library 287 extensions map to extensions available on other platforms, or differ very
295 ``ppapi_gles2`` which you'll want to include in your project. In most 288 slightly (if they differ, the extension is usually CHROMIUM or ANGLE instead of
296 cases extensions map to extensions available on other platforms, or 289 EXT).
297 differ very slightly (if they differ, the extension is usually CHROMIUM
298 or ANGLE instead of EXT).
299 290
300 .. TODO Improve documentation for GL extensions. 291 .. TODO Improve documentation for GL extensions.
301 292
302 Does Native Client support concurrency/parallelism? 293 Does Native Client support concurrency/parallelism?
303 --------------------------------------------------- 294 ---------------------------------------------------
304 295
305 Native Client and Portable Native Client both support pthreads, 296 Native Client and Portable Native Client both support pthreads,
306 C11/C++11 threads, and low-level synchronization primitives (mutex, 297 C11/C++11 threads, and low-level synchronization primitives (mutex,
307 barriers, atomic read/modify/write, compare-and-exchange, etc...), thus 298 barriers, atomic read/modify/write, compare-and-exchange, etc...), thus
308 allowing your Native Client application to utilize several CPU cores. 299 allowing your Native Client application to utilize several CPU cores.
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after
340 What happens to my data when I use Native Client? 331 What happens to my data when I use Native Client?
341 ------------------------------------------------- 332 -------------------------------------------------
342 333
343 Users can opt-in to sending usage statistics and crash information in 334 Users can opt-in to sending usage statistics and crash information in
344 Chrome, which includes usage statistics and crash information about 335 Chrome, which includes usage statistics and crash information about
345 Native Client. Crashes in your code won't otherwise send your 336 Native Client. Crashes in your code won't otherwise send your
346 information to Google: Google counts the number of such crashes, but 337 information to Google: Google counts the number of such crashes, but
347 does so anonymously without sending your application's data or its debug 338 does so anonymously without sending your application's data or its debug
348 information. 339 information.
349 340
350 For additional information about privacy and Chrome, see the `Google 341 For additional information about privacy and Chrome, see the `Google Chrome
351 Chrome privacy policy 342 privacy policy`_ and the `Google Chrome Terms of Service`_.
352 <https://www.google.com/chrome/intl/en/privacy.html>`_ and the `Google
353 Chrome Terms of Service
354 <https://www.google.com/chrome/intl/en/eula_text.html>`_.
355 343
356 How does Native Client prevent sandboxed code from doing Bad Things? 344 How does Native Client prevent sandboxed code from doing Bad Things?
357 -------------------------------------------------------------------- 345 --------------------------------------------------------------------
358 346
359 Native Client's sandbox works by validating the untrusted code (the 347 Native Client's sandbox works by validating the untrusted code (the
360 compiled Native Client module) before running it. The validator checks 348 compiled Native Client module) before running it. The validator checks
361 the following: 349 the following:
362 350
363 * **Data integrity:** No loads or stores are permitted outside of the 351 * **Data integrity:** No loads or stores are permitted outside of the
364 data sandbox. In particular this means that once loaded into memory, 352 data sandbox. In particular this means that once loaded into memory,
365 the binary is not writable. This is enforced by operating system 353 the binary is not writable. This is enforced by operating system
366 protection mechanisms. While new instructions can be inserted at 354 protection mechanisms. While new instructions can be inserted at
367 runtime to support things like JIT compilers, such instructions will 355 runtime to support things like JIT compilers, such instructions will
368 be subject to runtime verification according to the following 356 be subject to runtime verification according to the following
369 constraints before they are executed. 357 constraints before they are executed.
370 * **No unsafe instructions:** The validator ensures that the Native 358 * **No unsafe instructions:** The validator ensures that the Native
371 Client application does not contain any unsafe instructions. Examples 359 Client application does not contain any unsafe instructions. Examples
372 of unsafe instructions are ``syscall``, ``int``, and ``lds``. 360 of unsafe instructions are ``syscall``, ``int``, and ``lds``.
373 * **Control flow integrity:** The validator ensures that all direct and 361 * **Control flow integrity:** The validator ensures that all direct and
374 indirect branches target a safe instruction. 362 indirect branches target a safe instruction.
375 363
376 The beauty of the Native Client sandbox is in reducing "safe" code to a 364 The beauty of the Native Client sandbox is in reducing "safe" code to a
377 few simple rules that can be verified by a small trusted validator: the 365 few simple rules that can be verified by a small trusted validator: the
378 compiler isn't trusted. The same applies to Portable Native Client where 366 compiler isn't trusted. The same applies to Portable Native Client where
379 even the ``.pexe`` to ``.nexe`` translator, a simplified compiler 367 even the ``.pexe`` to ``.nexe`` translator, a simplified compiler
380 backend, isn't trusted: it is validated before executing, and so is its 368 backend, isn't trusted: it is validated before executing, and so is its
381 output. 369 output.
382 370
383 In addition to static analysis of untrusted code, the Native Client 371 In addition to static analysis of untrusted code, the Native Client runtime also
384 runtime also includes an outer sandbox that mediates system calls. For 372 includes an outer sandbox that mediates system calls. For more details about
385 more details about both sandboxes, see `Native Client: A Sandbox for 373 both sandboxes, see `Native Client: A Sandbox for Portable, Untrusted x86 Code`_
386 Portable, Untrusted x86 Code <http://research.google.com/pubs/pub34913.html>`_
387 (PDF). 374 (PDF).
388 375
389 How does Google know that the safety measures in Native Client are sufficient? 376 How does Google know that the safety measures in Native Client are sufficient?
390 ------------------------------------------------------------------------------ 377 ------------------------------------------------------------------------------
391 378
392 Google has taken several steps to ensure that Native Client's security 379 Google has taken several steps to ensure that Native Client's security works,
393 works, including: 380 including:
394 381
395 * Open source, peer-reviewed papers describing the design. 382 * Open source, peer-reviewed papers describing the design.
396 * A :doc:`security contest <community/security-contest/index>`. 383 * A :doc:`security contest <community/security-contest/index>`.
397 * Multiple internal and external security reviews. 384 * Multiple internal and external security reviews.
398 * The ongoing vigilance of our engineering and developer community. 385 * The ongoing vigilance of our engineering and developer community.
399 386
400 Google is committed to making Native Client safer than JavaScript and 387 Google is committed to making Native Client safer than JavaScript and other
401 other popular browser technologies. If you have suggestions for security 388 popular browser technologies. If you have suggestions for security improvements,
402 improvements, let the team know, by way of the `native-client-discuss 389 let the team know, by way of the native-client-discuss_ mailing list.
403 mailing list <https://groups.google.com/group/native-client-discuss>`_.
404 390
405 Development 391 Development
406 =========== 392 ===========
407 393
408 How do I debug? 394 How do I debug?
409 --------------- 395 ---------------
410 396
411 Instructions on :ref:`debugging the SDK examples 397 Instructions on :ref:`debugging the SDK examples
412 <debugging_the_sdk_examples>` using GDB are available. You can also 398 <debugging_the_sdk_examples>` using GDB are available. You can also
413 debug Native Client modules with some :doc:`alternative approaches 399 debug Native Client modules with some :doc:`alternative approaches
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after
449 because of the inherent security risks and because the resulting 435 because of the inherent security risks and because the resulting
450 application would not be portable across operating systems. Instead, 436 application would not be portable across operating systems. Instead,
451 Native Client provides portable cross-OS abstractions wrapping or 437 Native Client provides portable cross-OS abstractions wrapping or
452 proxying OS functionality or emulating UNIX system calls. For example, 438 proxying OS functionality or emulating UNIX system calls. For example,
453 Native Client provides an ``mmap()`` system call that behaves much like 439 Native Client provides an ``mmap()`` system call that behaves much like
454 the standard UNIX ``mmap()`` system call. 440 the standard UNIX ``mmap()`` system call.
455 441
456 Is my favorite third-party library available for Native Client? 442 Is my favorite third-party library available for Native Client?
457 --------------------------------------------------------------- 443 ---------------------------------------------------------------
458 444
459 Google has ported several third-party libraries to Native Client; such 445 Google has ported several third-party libraries to Native Client; such libraries
460 libraries are available in the naclports_ project. We encourage you to 446 are available in the naclports_ project. We encourage you to contribute
461 contribute libraries to naclports, and/or to host your own ported 447 libraries to naclports, and/or to host your own ported libraries, and to let the
462 libraries, and to `let the team know about it 448 team know about it on native-client-discuss_ when you do.
463 <https://groups.google.com/group/native-client-discuss>`_ when you do.
464 449
465 Do all the files in an application need to be served from the same domain? 450 Do all the files in an application need to be served from the same domain?
466 -------------------------------------------------------------------------- 451 --------------------------------------------------------------------------
467 452
468 The ``.nmf``, and ``.nexe`` or ``.pexe`` files must either be served from the 453 The ``.nmf``, and ``.nexe`` or ``.pexe`` files must either be served from the
469 same origin as the embedding page or an origin that has been configured 454 same origin as the embedding page or an origin that has been configured
470 correctly using CORS_. 455 correctly using CORS_.
471 456
472 For applications installed from the Chrome Web Store the Web Store manifest 457 For applications installed from the Chrome Web Store the Web Store manifest
473 must include the correct, verified domain of the embedding page. 458 must include the correct, verified domain of the embedding page.
(...skipping 90 matching lines...) Expand 10 before | Expand all | Expand 10 after
564 greater. 549 greater.
565 * You must load the correct ``.nexe`` file for your machine's specific 550 * You must load the correct ``.nexe`` file for your machine's specific
566 instruction set architecture (x86-32, x86-64 or ARM). You can ensure 551 instruction set architecture (x86-32, x86-64 or ARM). You can ensure
567 you're loading the correct ``.nexe`` file by building a separate 552 you're loading the correct ``.nexe`` file by building a separate
568 ``.nexe`` for each architecture, and using a ``.nmf`` manifest file to 553 ``.nexe`` for each architecture, and using a ``.nmf`` manifest file to
569 let the browser select the correct ``.nexe`` file. Note: the need to 554 let the browser select the correct ``.nexe`` file. Note: the need to
570 select a processor-specific ``.nexe`` goes away with Portable Native 555 select a processor-specific ``.nexe`` goes away with Portable Native
571 Client. 556 Client.
572 * If things still aren't working, :doc:`ask for help <help>`! 557 * If things still aren't working, :doc:`ask for help <help>`!
573 558
559
560 .. _`PNaCl SIMD: Speed on the Web`: https://www.youtube.com/watch?v=675znN6tntw& list=PLOU2XLYxmsIIwGK7v7jg3gQvIAWJzdat_
561 .. _Adapting Software Fault Isolation to Contemporary CPU Architectures: https:/ /nativeclient.googlecode.com/svn/data/site/NaCl_SFI.pdf
562 .. _`Native Client: A Sandbox for Portable, Untrusted x86 Code`: http://research .google.com/pubs/pub34913.html
563 .. _Crouton: https://github.com/dnschneid/crouton
564 .. _experimental development environment which runs within NaCl: https://www.you tube.com/watch?v=OzNuzBDEWzk&list=PLOU2XLYxmsIIwGK7v7jg3gQvIAWJzdat_
565 .. _introduction to GCC: https://www.google.com/search?q=gcc+introduction
566 .. _Mono port: https://github.com/elijahtaylor/mono
567 .. _naclports supports Lua, Python and Ruby: https://code.google.com/p/naclports /source/browse#svn%2Ftrunk%2Fsrc%2Fexamples%2Ftools
568 .. _Halide: http://halide-lang.org/
569 .. _GHC: http://www.haskell.org/ghc/docs/latest/html/users_guide/code-generators .html
570 .. _flang: https://flang-gsoc.blogspot.ie/2013/09/end-of-gsoc-report.html
571 .. _native-client-discuss: https://groups.google.com/group/native-client-discuss
572 .. _deprecated in Chrome: http://blog.chromium.org/2013/09/saying-goodbye-to-our -old-friend-npapi.html
573 .. _OpenGL ES 2.0: https://www.khronos.org/opengles/
574 .. _GLES2 file: https://code.google.com/p/chromium/codesearch#chromium/src/ppapi /lib/gl/gles2/gles2.c
575 .. _Google Chrome privacy policy: https://www.google.com/chrome/intl/en/privacy. html
576 .. _Google Chrome Terms of Service: https://www.google.com/chrome/intl/en/eula_t ext.html
577 .. _naclports: https://code.google.com/p/naclports
574 .. _CORS: http://en.wikipedia.org/wiki/Cross-origin_resource_sharing 578 .. _CORS: http://en.wikipedia.org/wiki/Cross-origin_resource_sharing
575 .. _naclports: https://code.google.com/p/naclports
576 .. _Crouton: https://github.com/dnschneid/crouton
OLDNEW
« no previous file with comments | « native_client_sdk/doc_generated/faq.html ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698