Chromium Code Reviews| 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 |