OLD | NEW |
1 .. _nacl-and-pnacl: | 1 .. _nacl-and-pnacl: |
2 | 2 |
3 ############## | 3 ############## |
4 NaCl and PNaCl | 4 NaCl and PNaCl |
5 ############## | 5 ############## |
6 | 6 |
7 This document describes the differences between **Native Client** and | 7 This document describes the differences between **Native Client** and |
8 **Portable Native Client**, and provides recommendations for when to use each. | 8 **Portable Native Client**, and provides recommendations for when to use each. |
9 | 9 |
10 .. contents:: | 10 .. contents:: |
11 :local: | 11 :local: |
12 :backlinks: none | 12 :backlinks: none |
13 :depth: 2 | 13 :depth: 2 |
14 | 14 |
15 Native Client (NaCl) | 15 Native Client (NaCl) |
16 ==================== | 16 ==================== |
17 | 17 |
18 Native Client enables the execution of native code securely inside web | 18 Native Client enables the execution of native code securely inside web |
19 applications through the use of advanced `Software Fault Isolation (SFI) | 19 applications through the use of advanced `Software Fault Isolation (SFI) |
20 techniques </native-client/community/talks#research>`_. Since its launch in | 20 techniques <http://research.google.com/pubs/pub35649.html>`_. Since its launch
in |
21 2011, Native Client has provided developers with the ability to harness a | 21 2011, Native Client has provided developers with the ability to harness a |
22 client machine's computational power to a much fuller extent than traditional | 22 client machine's computational power to a much fuller extent than traditional |
23 web technologies, by running compiled C and C++ code at near-native speeds and | 23 web technologies, by running compiled C and C++ code at near-native speeds and |
24 taking advantage of multiple cores with shared memory. | 24 taking advantage of multiple cores with shared memory. |
25 | 25 |
26 While Native Client provides operating system independence, it requires | 26 While Native Client provides operating system independence, it requires |
27 developers to generate architecture-specific executable | 27 developers to generate architecture-specific executable |
28 (**nexe**) modules for each hardware platform. This is not only inconvenient | 28 (**nexe**) modules for each hardware platform. This is not only inconvenient |
29 for developers, but architecture-specific machine code is not portable and thus | 29 for developers, but architecture-specific machine code is not portable and thus |
30 not well-suited for the open web. The traditional method of application | 30 not well-suited for the open web. The traditional method of application |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
105 instructions in an application (i.e., inline assembly), but tries to | 105 instructions in an application (i.e., inline assembly), but tries to |
106 offer high-performance portable equivalents. One such example is | 106 offer high-performance portable equivalents. One such example is |
107 PNaCl's :ref:`Portable SIMD Vectors <portable_simd_vectors>`. | 107 PNaCl's :ref:`Portable SIMD Vectors <portable_simd_vectors>`. |
108 * PNaCl only supports static linking with the ``newlib`` | 108 * PNaCl only supports static linking with the ``newlib`` |
109 C standard library (the Native Client SDK provides a PNaCl port of | 109 C standard library (the Native Client SDK provides a PNaCl port of |
110 ``newlib``). Dynamic linking and ``glibc`` are not yet supported. | 110 ``newlib``). Dynamic linking and ``glibc`` are not yet supported. |
111 Work is under way to enable dynamic linking in future versions of PNaCl. | 111 Work is under way to enable dynamic linking in future versions of PNaCl. |
112 * PNaCl does not support some GNU extensions | 112 * PNaCl does not support some GNU extensions |
113 like taking the address of a label for computed ``goto``, or nested | 113 like taking the address of a label for computed ``goto``, or nested |
114 functions. | 114 functions. |
OLD | NEW |