imcplugin: Allow sending FDs in messages
[nativeclient.git] / RELEASE_NOTES
blob9204d57d9a25a770d3e3fe4c7ab51be1e2cb0322
1 RELEASE NOTES
2 Native Client Release 0.1
3 09 March 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 XaoS builds only on Linux at this time. Quake requires downloading
78 source from www.libsdl.org, but should build on all three platforms.
79 Neither is provided pre-built, due to GPL license considerations.
80 We hope to streamline these builds in a future release.
82 DOXYGEN REQUIRED TO BUILD DOCUMENTATION
84 If you discover the MODE=all option to our scons build, and you
85 don't have doxygen installed, you will not be able to build.
87 CURRENT VERSION CHANGES
89 The March 9 release contains the following changes.
91 General changes:
92 - This release is not binary compatible with earlier releases. You need
93   to recompile old code before running it with this release.
94 - Changed the expiration date from March 17 to April 17.
95 - Clarified install and build instructions. Added a warning: don't use
96   spaces in paths!
98 User interface changes:
99 - On Linux, when a NaCl module stops responding, the plug-in now pops up
100   a message box allowing the user to terminate the module.
101 - Native Client now explicitly terminates on unsupported versions of
102   Windows. We only support Windows XP and after, and for now we will
103   disallow running on any 64-bit version of Windows.
105 Changes to demos:
106 - Changed the NPAPI demos to wait for Native Client modules to finish
107   loading. This should fix hangs in Lua, Monte Carlo Estimate for Pi,
108   and other examples that use NPAPI.
109 - Staggered loading of multiple instances of Quake.
110 - Changed srpc_url_as_nacl_desc.html to use embed instead of object.
112 Changes that affect developers of Native Client modules:
113 - Improved API reference overview, including adding library information.
114 - Added libunimpl, a library of unimplemented C library functions, to
115   make porting easier.
116 - Added libgoogle_nacl_npruntime to the SDK. With this change, you don't
117   need to build Native Client to be able to build modules that use NPAPI.
118 - Added NACLLOG and NACLVERBOSITY, two environment variables that enable
119   logging output (even on Windows). To use these, set NACLLOG to the
120   location of the output file (for example, c:\tmp\nacllog.txt) and
121   set NACLVERBOSITY to a value between 0 and 4. When NACLVERBOSITY is 0,
122   you get minimal output from the system runtime; 4 means every syscall
123   handler emits a few messages.
125 Other changes:
126 - Building Native Client on Windows now fails if any warnings occur.
127 - Added Platform Qualification Test V0.1. Moved CPU white/black list
128   code from ncv to platform_qual_test. Minor refactoring of CPUID interfaces.
129 - Most libraries can now be built by SCons, as well as by make.
130 - Removed libssp.
131 - Fixed build problems on some versions of Linux. See
132   code.google.com/p/nativeclient/issues/detail?id=5.
133 - Added support for SSE4.
134 - Changed validator diagnostic output.
135 - Made sure all calls to new use the nothrow version and check the return
136   value.
137 - Added Mark Seaborn's simplification of the sel_mem NaClVmmapUpdate
138   code, plus his mmap_test and fixes for the toolchain. Also fixed some
139   syscall semantics issues (non-NULL start address treated as if MAP_FIXED
140   was specified, rather than used as a hint; made munmap of zero-length
141   pages behave consistently across platforms).
142 - Added a mechanism for gathering info on the impact of syscall processing
143   on performance. Use the new environment variable NACLDELAY to specify an
144   artificial delay in microseconds to be added after every syscall. Use the
145   new NACLCLOCK environment variable to specify the number of cycles per
146   second. The tool syscall_stats.py parses NaClLog output and computes
147   statistics for the inter-syscall time and the number of syscalls per
148   1/100 second.
149 - Changed various Ctors to always set the virtual function table pointers
150   to NULL, and only set them to a valid vtable if the Ctor succeeds, to
151   make the likelihood that a heap-spray attack would succeed lower, when
152   client code does not check the return status of C-based object Ctors.
153 - Updated the ABI version (EF_NACL_ABIVERSION) from 2 to 3.
154 - Miscellaneous minor bug fixes.
155 - Miscellaneous build and test fixes and improvements.