OLD | NEW |
---|---|
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 Loading... | |
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 Cient? |
binji
2014/07/09 21:54:17
sp: Client
JF
2014/07/09 22:01:38
Done.
| |
74 -------------------------------- | 74 ----------------------------------------------------------------- |
75 | |
76 See :doc:`NaCl and PNaCl <nacl-and-pnacl>`. In short: PNaCl works on the Open | |
binji
2014/07/09 21:54:17
I think I prefer "open web" to "Open Web platform"
JF
2014/07/09 22:01:38
The wording is from Erik :)
| |
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 Cient? | |
binji
2014/07/09 21:54:17
sp: Client
JF
2014/07/09 22:01:38
Done.
| |
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 Loading... | |
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`_, |
binji
2014/07/09 21:54:17
seems like a long link, but OK
JF
2014/07/09 22:01:38
Acknowledged.
| |
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 Loading... | |
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 Loading... | |
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_. |
binji
2014/07/09 21:54:17
this reads weird.
should be: "by way of the nativ
JF
2014/07/09 22:01:38
Done.
| |
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 Loading... | |
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 Loading... | |
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://src.chromium.org/viewvc/chrome/trunk/src/ppapi/lib/gl/gl es2/gles2.c | |
binji
2014/07/09 21:54:17
I wonder if it would be better to point to cs.chro
JF
2014/07/09 22:01:38
Done.
| |
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 | |
OLD | NEW |