Index: native_client_sdk/src/doc/faq.rst |
diff --git a/native_client_sdk/src/doc/faq.rst b/native_client_sdk/src/doc/faq.rst |
index 37b84fe4be294a2da11993944009321027e30ca9..640c79485edf50cd0b26a4a1f64c083e5c635134 100644 |
--- a/native_client_sdk/src/doc/faq.rst |
+++ b/native_client_sdk/src/doc/faq.rst |
@@ -70,28 +70,32 @@ Portable Native client further enhances the above: |
For more details, refer to the :doc:`history behind and comparison of |
NaCl and PNaCl <nacl-and-pnacl>`. |
-When should I use Native Client? |
--------------------------------- |
+When should I use Portable Native Client instead of Native Client? |
+------------------------------------------------------------------ |
+ |
+See :doc:`NaCl and PNaCl <nacl-and-pnacl>`. In short: PNaCl works on the Open |
+Web platform delivered by Chrome whereas NaCl only works on the Chrome Web |
+Store. |
+ |
+When should I use Portable Native Client / Native Client? |
+--------------------------------------------------------- |
The following are some typical use cases. For details, see the |
:doc:`Technical Overview <overview>`. |
-* Porting existing software components for use in a web application. |
-* Porting legacy desktop applications. |
-* Handling browser-side encryption and decryption for an enterprise |
- application. |
-* Handling multimedia for a web application. |
-* Handling various aspects of web-based games, including physics engines |
- and AI. |
+* Porting existing applications or software components, written in C/C++ or |
+ virtual machines written in C/C++, for use in a web application. |
+* Using compute-intensive applications, including threads and SIMD, such as: |
-Native Client is a versatile technology; we expect that it will also be |
-used in many other contexts outside of Chrome. |
+ * Scientific computing. |
+ * Handling multimedia for a web application. |
+ * Various aspects of web-based games, including physics engines and AI. |
-When should I use Portable Native Client? |
------------------------------------------ |
+* Running untrusted code on a server or within an application (such as a plugin |
+ system for a game). |
-See :doc:`NaCl and PNaCl <nacl-and-pnacl>`. In short: PNaCl works on the |
-open web whereas NaCl only works on the Chrome Web Store. |
+Portable Native Client and Native Client are versatile technologies which are |
+used in many other contexts outside of Chrome. |
How fast does code run in Portable Native Client? |
------------------------------------------------- |
@@ -119,10 +123,9 @@ native code such as :ref:`threading <language_support_threading>` and |
For details, see: |
-* `Adapting Software Fault Isolation to Contemporary CPU Architectures |
- <https://nativeclient.googlecode.com/svn/data/site/NaCl_SFI.pdf>`_ (PDF). |
-* `Native Client: A Sandbox for Portable, Untrusted x86 Code |
- <http://research.google.com/pubs/pub34913.html>`_ (PDF). |
+* `PNaCl SIMD: Speed on the Web`_. |
+* `Adapting Software Fault Isolation to Contemporary CPU Architectures`_ (PDF). |
+* `Native Client: A Sandbox for Portable, Untrusted x86 Code`_ (PDF). |
If your code isn't performing as close to native speed as you'd expect, |
:doc:`let us know <help>`! |
@@ -158,11 +161,12 @@ Development Environments and Tools |
What development environment and development operating system do you recommend? |
------------------------------------------------------------------------------- |
-You can develop on Windows, Mac, or Linux, and the resulting Native |
-Client or Portable Native Client application will run inside the Google |
-Chrome browser on all those platforms as well as ChromeOS. You can also |
-develop on ChromeOS with Crouton_, and we're working on |
-self-hosting a full development environment on Portable Native Client. |
+You can develop on Windows, Mac, or Linux, and the resulting Native Client or |
+Portable Native Client application will run inside the Google Chrome browser on |
+all those platforms as well as ChromeOS. You can also develop on ChromeOS with |
+Crouton_ or our `experimental development environment which runs within NaCl`_, |
+and we're working on self-hosting a full development environment on Portable |
+Native Client. |
Any editor+shell combination should work as well as IDEs like Eclipse, |
Visual Studio with the :doc:`Native Client Add-In |
@@ -176,10 +180,9 @@ instructions <devguide/devcycle/building>` useful, and you can look at |
the code and Makefiles for the SDK examples to understand how the |
examples are built and run. |
-You'll need to learn how to use some tools (like GCC, LLVM, make, |
-Eclipse, Visual Studio, or Xcode) before you can get very far with the |
-SDK. Try seaching for an `introduction to GCC |
-<https://www.google.com/search?q=gcc+introduction>`_. |
+You'll need to learn how to use some tools (like GCC, LLVM, make, Eclipse, |
+Visual Studio, or Xcode) before you can get very far with the SDK. Try seaching |
+for an `introduction to GCC`_. |
Openness, and Supported Architectures and Languages |
@@ -224,26 +227,19 @@ it's platform-independent, and we'd like it to stay that way. |
Do I have to use C or C++? I'd really like to use another language. |
------------------------------------------------------------------- |
-Right now only C and C++ are supported directly by the toolchain in the |
-SDK. C# and other languages in the .NET family are supported via the |
-`Mono port <https://github.com/elijahtaylor/mono>`_ for Native |
-Client. Moreover, there are several ongoing projects to support |
-additional language runtimes (e.g. `naclports supports Lua, Python and |
-Ruby |
-<https://code.google.com/p/naclports/source/browse#svn%2Ftrunk%2Fsrc%2Fexamples%2Ftools>`_) |
-as well as to compile more languages to LLVM's intermediate |
-representation (e.g. support Haskell with `GHC |
-<http://www.haskell.org/ghc/docs/latest/html/users_guide/code-generators.html>`_ |
-or support Fortran with `flang |
-<https://flang-gsoc.blogspot.ie/2013/09/end-of-gsoc-report.html>`_), or |
+Right now only C and C++ are supported directly by the toolchain in the SDK. C# |
+and other languages in the .NET family are supported via the `Mono port`_ for |
+Native Client. Moreover, there are several ongoing projects to support |
+additional language runtimes (e.g. `naclports supports Lua, Python and Ruby`_) |
+as well as to compile more languages to LLVM's intermediate representation |
+(e.g. support Halide_, Haskell with GHC_ or support Fortran with flang_), or |
transpile languages to C/C++ (source-to-source compilation). |
If you're interested in getting other languages working, please contact the |
-Native Client team by way of the `native-client-discuss mailing list |
-<https://groups.google.com/group/native-client-discuss>`_. |
+Native Client team by way of the native-client-discuss_ mailing list. |
-Will you only support Chrome? What about other browsers? |
--------------------------------------------------------- |
+Do you only support Chrome? What about other browsers? |
+------------------------------------------------------ |
We aim to support multiple browsers. However, a number of features that |
we consider requirements for a production-quality system that keeps the |
@@ -265,9 +261,7 @@ Client has transitioned from using NPAPI to using Pepper. |
Is NPAPI part of the Native Client SDK? |
--------------------------------------- |
-NPAPI is not supported by the Native Client SDK, and is `deprecated in |
-Chrome |
-<http://blog.chromium.org/2013/09/saying-goodbye-to-our-old-friend-npapi.html>`_. |
+NPAPI is not supported by the Native Client SDK, and is `deprecated in Chrome`_. |
Does Native Client support SIMD vector instructions? |
---------------------------------------------------- |
@@ -281,21 +275,18 @@ Portable Native Client supports portable SIMD vectors, as detailed in |
Can I use Native Client for 3D graphics? |
---------------------------------------- |
-Yes. Native Client supports `OpenGL ES 2.0 |
-<https://www.khronos.org/opengles/>`_. |
+Yes. Native Client supports `OpenGL ES 2.0`_. |
To alert the user regarding their hardware platform's 3D feature set |
before loading a large NaCl application, see :doc:`Vetting the driver in |
Javascript <devguide/coding/3D-graphics>`. |
-Some GL extensions are exposed to Native Client applications, see the |
-`GLES2 file |
-<https://src.chromium.org/viewvc/chrome/trunk/src/ppapi/lib/gl/gles2/gles2.c>`_. |
-This file is part of the GL wrapper supplied by the library |
-``ppapi_gles2`` which you'll want to include in your project. In most |
-cases extensions map to extensions available on other platforms, or |
-differ very slightly (if they differ, the extension is usually CHROMIUM |
-or ANGLE instead of EXT). |
+Some GL extensions are exposed to Native Client applications, see the `GLES2 |
+file`_. This file is part of the GL wrapper supplied by the library |
+``ppapi_gles2`` which you'll want to include in your project. In most cases |
+extensions map to extensions available on other platforms, or differ very |
+slightly (if they differ, the extension is usually CHROMIUM or ANGLE instead of |
+EXT). |
.. TODO Improve documentation for GL extensions. |
@@ -347,11 +338,8 @@ information to Google: Google counts the number of such crashes, but |
does so anonymously without sending your application's data or its debug |
information. |
-For additional information about privacy and Chrome, see the `Google |
-Chrome privacy policy |
-<https://www.google.com/chrome/intl/en/privacy.html>`_ and the `Google |
-Chrome Terms of Service |
-<https://www.google.com/chrome/intl/en/eula_text.html>`_. |
+For additional information about privacy and Chrome, see the `Google Chrome |
+privacy policy`_ and the `Google Chrome Terms of Service`_. |
How does Native Client prevent sandboxed code from doing Bad Things? |
-------------------------------------------------------------------- |
@@ -380,27 +368,25 @@ even the ``.pexe`` to ``.nexe`` translator, a simplified compiler |
backend, isn't trusted: it is validated before executing, and so is its |
output. |
-In addition to static analysis of untrusted code, the Native Client |
-runtime also includes an outer sandbox that mediates system calls. For |
-more details about both sandboxes, see `Native Client: A Sandbox for |
-Portable, Untrusted x86 Code <http://research.google.com/pubs/pub34913.html>`_ |
+In addition to static analysis of untrusted code, the Native Client runtime also |
+includes an outer sandbox that mediates system calls. For more details about |
+both sandboxes, see `Native Client: A Sandbox for Portable, Untrusted x86 Code`_ |
(PDF). |
How does Google know that the safety measures in Native Client are sufficient? |
------------------------------------------------------------------------------ |
-Google has taken several steps to ensure that Native Client's security |
-works, including: |
+Google has taken several steps to ensure that Native Client's security works, |
+including: |
* Open source, peer-reviewed papers describing the design. |
* A :doc:`security contest <community/security-contest/index>`. |
* Multiple internal and external security reviews. |
* The ongoing vigilance of our engineering and developer community. |
-Google is committed to making Native Client safer than JavaScript and |
-other popular browser technologies. If you have suggestions for security |
-improvements, let the team know, by way of the `native-client-discuss |
-mailing list <https://groups.google.com/group/native-client-discuss>`_. |
+Google is committed to making Native Client safer than JavaScript and other |
+popular browser technologies. If you have suggestions for security improvements, |
+let the team know, by way of the native-client-discuss_ mailing list. |
Development |
=========== |
@@ -456,11 +442,10 @@ the standard UNIX ``mmap()`` system call. |
Is my favorite third-party library available for Native Client? |
--------------------------------------------------------------- |
-Google has ported several third-party libraries to Native Client; such |
-libraries are available in the naclports_ project. We encourage you to |
-contribute libraries to naclports, and/or to host your own ported |
-libraries, and to `let the team know about it |
-<https://groups.google.com/group/native-client-discuss>`_ when you do. |
+Google has ported several third-party libraries to Native Client; such libraries |
+are available in the naclports_ project. We encourage you to contribute |
+libraries to naclports, and/or to host your own ported libraries, and to let the |
+team know about it on native-client-discuss_ when you do. |
Do all the files in an application need to be served from the same domain? |
-------------------------------------------------------------------------- |
@@ -571,6 +556,23 @@ Here are ways to resolve some common problems that can prevent loading: |
Client. |
* If things still aren't working, :doc:`ask for help <help>`! |
-.. _CORS: http://en.wikipedia.org/wiki/Cross-origin_resource_sharing |
-.. _naclports: https://code.google.com/p/naclports |
+ |
+.. _`PNaCl SIMD: Speed on the Web`: https://www.youtube.com/watch?v=675znN6tntw&list=PLOU2XLYxmsIIwGK7v7jg3gQvIAWJzdat_ |
+.. _Adapting Software Fault Isolation to Contemporary CPU Architectures: https://nativeclient.googlecode.com/svn/data/site/NaCl_SFI.pdf |
+.. _`Native Client: A Sandbox for Portable, Untrusted x86 Code`: http://research.google.com/pubs/pub34913.html |
.. _Crouton: https://github.com/dnschneid/crouton |
+.. _experimental development environment which runs within NaCl: https://www.youtube.com/watch?v=OzNuzBDEWzk&list=PLOU2XLYxmsIIwGK7v7jg3gQvIAWJzdat_ |
+.. _introduction to GCC: https://www.google.com/search?q=gcc+introduction |
+.. _Mono port: https://github.com/elijahtaylor/mono |
+.. _naclports supports Lua, Python and Ruby: https://code.google.com/p/naclports/source/browse#svn%2Ftrunk%2Fsrc%2Fexamples%2Ftools |
+.. _Halide: http://halide-lang.org/ |
+.. _GHC: http://www.haskell.org/ghc/docs/latest/html/users_guide/code-generators.html |
+.. _flang: https://flang-gsoc.blogspot.ie/2013/09/end-of-gsoc-report.html |
+.. _native-client-discuss: https://groups.google.com/group/native-client-discuss |
+.. _deprecated in Chrome: http://blog.chromium.org/2013/09/saying-goodbye-to-our-old-friend-npapi.html |
+.. _OpenGL ES 2.0: https://www.khronos.org/opengles/ |
+.. _GLES2 file: https://code.google.com/p/chromium/codesearch#chromium/src/ppapi/lib/gl/gles2/gles2.c |
+.. _Google Chrome privacy policy: https://www.google.com/chrome/intl/en/privacy.html |
+.. _Google Chrome Terms of Service: https://www.google.com/chrome/intl/en/eula_text.html |
+.. _naclports: https://code.google.com/p/naclports |
+.. _CORS: http://en.wikipedia.org/wiki/Cross-origin_resource_sharing |