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 | 18 Native Client enables the execution of native code securely inside web |
19 securely inside web applications through the use of advanced | 19 applications through the use of advanced `Software Fault Isolation (SFI) |
20 `Software Fault Isolation (SFI) techniques <https://developers.google.com/native
-client/community/talks#research>`_. | 20 techniques </native-client/community/talks#research>`_. Since its launch in |
21 Since its launch in 2011, Native Client has provided | 21 2011, Native Client has provided developers with the ability to harness a |
22 developers with the ability to harness a client machine's computational power | 22 client machine's computational power to a much fuller extent than traditional |
23 to a much fuller extent than traditional web technologies, by running compiled C | 23 web technologies, by running compiled C and C++ code at near-native speeds and |
24 and C++ code at near-native speeds and taking advantage of multiple cores with | 24 taking advantage of multiple cores with shared memory. |
25 shared memory. | |
26 | 25 |
27 While Native Client provides operating system independence, it requires | 26 While Native Client provides operating system independence, it requires |
28 developers to generate architecture-specific executable modules | 27 developers to generate architecture-specific executable modules |
29 (**nexe** modules) for each hardware platform. This is not only inconvenient | 28 (**nexe** modules) for each hardware platform. This is not only inconvenient |
30 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 |
31 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 |
32 distribution on the web is through a self-contained bundle of HTML, CSS, | 31 distribution on the web is through a self-contained bundle of HTML, CSS, |
33 JavaScript, and other resources (images, etc.) that can be hosted on a server | 32 JavaScript, and other resources (images, etc.) that can be hosted on a server |
34 and run inside a web browser. With this type of distribution, a website | 33 and run inside a web browser. With this type of distribution, a website |
35 created today should still work years later, on all platforms. | 34 created today should still work years later, on all platforms. |
(...skipping 77 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
113 attempt to mitigate this problem by introducing portable intrinsics for vector | 112 attempt to mitigate this problem by introducing portable intrinsics for vector |
114 operations. | 113 operations. |
115 * Currently PNaCl only supports static linking with the ``newlib`` | 114 * Currently PNaCl only supports static linking with the ``newlib`` |
116 C standard library (the Native Client SDK provides a PNaCl port of | 115 C standard library (the Native Client SDK provides a PNaCl port of |
117 ``newlib``). Dynamic linking and ``glibc`` are not yet supported. | 116 ``newlib``). Dynamic linking and ``glibc`` are not yet supported. |
118 Work is under way to enable dynamic linking in future versions of PNaCl. | 117 Work is under way to enable dynamic linking in future versions of PNaCl. |
119 * In the initial release, PNaCl does not support vector types and SIMD. | 118 * In the initial release, PNaCl does not support vector types and SIMD. |
120 * In the initial release, PNaCl does not support some GNU extensions | 119 * In the initial release, PNaCl does not support some GNU extensions |
121 like taking the address of a label for computed ``goto``, or nested | 120 like taking the address of a label for computed ``goto``, or nested |
122 functions. | 121 functions. |
OLD | NEW |