+[[TODO: fix all the TODO items!]]
+
+Release 3.0.0 ([[TODO: add release date]])
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+3.0.0 is a major overhaul of Valgrind. The most significant user-visible
+change is that Valgrind now supports architectures other than x86.
+The new architectures it supports are AMD64 and PPC32, and the
+infrastructure is present for other architectures to be added later.
+
+The AMD64 support works well, but has some shortcomings:
+
+ - It generally won't be as solid as the x86 version. For example, support
+ for more obscure instructions and system calls may be missing. We will
+ fix these as they arise.
+
+ - Address space may be limited; see the point about position-independent
+ executables below.
+
+The PPC32 support is very basic. It may not work reliably even for small
+programs, but it's a start. Many thanks to Paul Mackerras for his great
+work that enabled this support.
+
+Other user-visible changes:
+
+- No longer building Valgrind as a position-indendependent executable (PIE)
+ by default, as it caused too many problems.
+
+ Without PIE enabled, AMD64 programs will only be able to access 2GB of
+ address space. We will fix this eventually, but not for the moment.
+
+ Use --enable-pie at configure-time to turn this on.
+
+- Support for programs that use stack-switching has been improved. Use
+ the --max-stackframe flag for simple cases, and the
+ VALGRIND_STACK_REGISTER, VALGRIND_STACK_DEREGISTER and
+ VALGRIND_STACK_CHANGE client requests for trickier cases.
+
+- Support for programs that use self-modifying code has been improved, in
+ particular programs that put temporary code fragments on the stack.
+ This helps for C programs compiled with GCC that use nested functions, and
+ also Ada programs. This is controlled with the --smc-support flag,
+ although the default setting should work in most cases.
+
+- Output can now be printed in XML format. This should make it easier for
+ other tools (such as GUI front-ends) to use Valgrind output as input.
+ The --xml flag controls this.
+ [[TODO: describe the related CLOs added (eg. --log-file-qualifier)]]
+
+- Programs that allocate many heap blocks may run faster, due to
+ improvements in certain data structures.
+
+- Addrcheck is currently not working. We hope to get it working again soon.
+ Helgrind is still not working, as was the case for the 2.4.0 release.
+
+- [[TODO: add more here]]
+
+Changes that are not user-visible:
+
+- The JITter has been completely rewritten, and is now in a separate
+ library, called Vex. This enabled a lot of the user-visible changes, such
+ as new architecture support. It may run slower than the old JITter;
+ feedback about this would be useful.
+
+- The code has been modularized significantly, and should be easier to
+ navigate and understand.
+
+- Lots of code has been rewritten.
+
+- [[TODO: add more here]]
+
+BUGS FIXED
+
+[[TODO: add the full list here (once the RCs are out of the way?)]]
+
+
Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2.4.0 brings many significant changes and bug fixes. The most