Merge branch 'upstream'
[nativeclient.git] / RELEASE_NOTES
blob604576f2629c615e6599f781d04717afab53545f
1 RELEASE NOTES
2 Native Client Release 0.1
3 Updated: 23 April 2009
5 This file documents issues known at the time of the release, with an
6 emphasis on security-related issues (and possibly some neglected
7 robustness or functionality issues). Please see
8 http://code.google.com/p/nativeclient/wiki/ReleaseNotes for the most
9 recent information. See README.html in this directory for an
10 introduction to Native Client. For the full version/release number
11 of this release, refer to nacl/googleclient/VERSION.
13 CHANGES SINCE THE PREVIOUS RELEASE
15 See the CURRENT VERSION CHANGES section at the bottom of this file.
17 BROWSER SUPPORT LIMITATIONS
19 Native Client supports Firefox 3 on Linux, Windows and MacOS, and
20 Chrome, Safari and Opera on Windows.
22 Support for the following browsers is not available at this time:
23    * Internet Explorer
25 These browsers are partially supported:
26    * Camino on MacOS appears to work but has had minimal testing
27    * Firefox 2 on MacOS: We STRONGLY encourage Mac users to upgrade
28      their Firefox version to 3 for Native Client. On Firefox 2,
29      control, command and alt keys are not enabled due to
30      an eavesdropping vulnerability. Note the control key is used
31      for firing weapons in Quake.
32    * Safari on MacOS: However, mouse events don't work.
34 OPERATING SYSTEM SUPPORT LIMITATIONS
36 Native Client does not work on 64-bit versions of Windows. Many
37 versions of 64-bit Windows lack the system call required to set
38 up protected memory segments. We believe that Native Client works
39 on 32-bit Vista and Windows XP.
41 LIMITED VIRTUAL MACHINE SUPPORT
43 Some virtual machines do not implement the CPUID instruction
44 correctly.  As a result, the Native Client sandbox can be defeated via
45 an instruction decoder desynchronization attack on certain VMs. We
46 believe VMWare works properly. The following VMs are known to have
47 exploitable CPUID implementation defects:
48    * Parallels
49    * Qemu
50    * Xen
52 NPAPI SUPPORT IS PRELIMINARY
54 NPAPI was designed (and prior to Native Client *was*) only for trusted
55 code. As such, we think it is possible there are many exploitable
56 security problems with the NPAPI API itself and with its current
57 implementations. Our focus to date for NPAPI has been on functionality
58 rather than security. We will probably be revising our NPAPI
59 implementation to make it much more restrictive, and considering
60 variation between various browser implementations of NPAPI.
62 OUTER SANDBOX NOT INCLUDED IN THIS RELEASE
64 Our outer sandbox implementations are not sufficiently stable yet to
65 be worthy of sharing at this time. Stay tuned!
67 NO "FRIENDLY" INSTALLERS
69 Our goal in releasing Native Client at this time is to get feedback
70 from the security and research community to help us make the system
71 better, and not to get a large number of users. As such, we don't
72 provide a consumer-oriented install. Our current installer is
73 implemented as a part of our build system.
75 BUILDING GPL EXAMPLES
77 Neither Quake nor XaoS is provided pre-built, due to GPL license
78 considerations. We hope to streamline these builds in a future
79 release.
81 DOXYGEN REQUIRED TO BUILD DOCUMENTATION
83 If you discover the MODE=all option to our scons build, and you
84 don't have doxygen installed, you will not be able to build.
86 CURRENT VERSION CHANGES
88 This release contains the following changes.
90 General changes:
91 - This release is not binary compatible with earlier releases. You need
92   to recompile old code before running it with this release.
93 - Changed the expiration date from April 30 to June 1.
95 User interface and doc changes:
96 - When the httpd.py script starts, it now displays an informational message
97   with the server port number.
98 - Cleaned up the generated API reference doc -- fewer warnings, fewer files,
99   more links. Added missing descriptions.
100 - Moved platform-specific details into their own pages.
101 - Added an example of using NSPluginWrapper.
102 - Added a custom search box to the top of README.html. Use it to find
103   strings that are in the online Native Client docs (including the wiki),
104   groups, or source code.
106 Changes to examples and tests:
107 - Renamed the browser test page from index.html (under
108   .../scons-out/nacl/staging/) to examples.html, so you can browse the
109   staging directory.
110 - Started changing demos to use a new helper and testing library,
111   tests/nacl_js_lib.js.
112 - Added an example for contest issue 49.
113 - tools/httpd.py is now threaded.
114 - Refactored the JavaScript for many*html.
115 - Added an automatic page reloader (source code in tests/autoloader). You
116   can run this test by clicking the last link in the Performance Tests
117   column of the browser test page.
119 API and SDK changes:
120 - Added a Linux port of GDB for use with Native Client. The executable is at
121   nacl/googleclient/third_party/nacl_sdk/linux/sdk/nacl-sdk/bin/nacl-gdb.
122   The patch file is in nacl/googleclient/native_client/tools/patches.
123 - Exported all header files needed for applications to build, so that
124   the SDK is usable when the native_client directory isn't present.
125   All untrusted code should now use the SDK-resident header files. For
126   example, rather than
127     #include "native_client/intermodule_comm/nacl_htp.h"
128   untrusted code should use
129     #include <nacl/nacl_htp.h>
131 Other changes:
132 - The initial inaccessible region is now 64KB. Syscalls now start at 64K,
133   user text at 128K.
134 - Fixed contest issues 49, 59, 60, and 70.
135 - Renamed() ValidateError to ValidatePrintError() to make it clearer
136   that all that routine does is printing. Added a default case to
137   the main instruction type switch statement so that it will fail
138   reliably if somebody adds an instruction type. Fixes issue 69.
139 - Applied Mark Seaborn's TLS cleanups.
140 - Added a tool (tools/generate_bad_nexes.py) to generate malformed
141   nexe binaries.
142 - Changed the Python path to not specify 2.4; added minimum and maximum
143   version tests.
144 - Reduced the number of library files; most of the libraries are now in
145   the SDK.
146 - Made the build pickier (e.g., added -pedantic, started using tidy on HTML).
147   Fixed code that made the pickier build fail.
148 - Added documentation/check.sh tool, which runs tidy on HTML files.
149 - Added an outer sandbox for linux; it's disabled by default. To
150   enable it, set the environment variable NACL_ENABLE_OUTER_SANDBOX.
151 - Miscellaneous minor bug fixes.
152 - Miscellaneous build and test fixes and improvements.