Update NEWS file for 2.4.0 release.
MERGED FROM CVS HEAD
git-svn-id: svn://svn.valgrind.org/valgrind/trunk@3304 a5019735-40e9-0310-863c-91ae7b9d1cf9
diff --git a/NEWS b/NEWS
index 1ae1b64..c9cb8f7 100644
--- a/NEWS
+++ b/NEWS
@@ -1,4 +1,72 @@
+Stable release 2.4.0 (March 2005) -- CHANGES RELATIVE TO 2.2.0
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+2.4.0 represents another architectural change for Valgrind. The most
+significant user-visible change is that we no longer emulate
+libpthread; this has both pluses and minuses.
+
+* Memcheck is now the default tool
+
+* The default stack backtrace is now 12 call frames
+
+* Suppressions can have up to 25 call frame matches, rather than
+ just 4
+
+* libpthread has gone along with all the bugs associated with it.
+ Instead, Valgrind now emulates the kernel's threading syscalls
+ (clone, etc), and lets you use your standard system libpthread.
+ This means:
+
+ - There should be many fewer system dependencies and strange
+ library-related bugs. There is a small performance improvement,
+ and a large stability improvement.
+
+ - On the downside, this means that Valgrind can no longer report
+ on problems with how your program uses threads. It also means
+ that Helgrind is currently non-functional. We're hoping to
+ fix these for a (near) future release.
+
+* Addrcheck and memcheck use a lot less memory for many programs.
+ These tools no longer need to allocate shadow memory if there are
+ large regions of memory with the same A/V states - such as an
+ mmaped file.
+
+* Addrcheck and memcheck's leak-detector has been improved. It now
+ reports many more types of memory leak, including leaked cycles.
+ When reporting leaked memory, it can distinguish between directly
+ leaked memory (memory with no references), and indirectly leaked
+ memory (memory only referred to by other leaked memory).
+
+* Memcheck's confusion over the effect of mprotect() has been fixed;
+ previously mprotect could erroneously make undefined data defined.
+
+* State passed to signal handlers may be modified so that it will take
+ effect when the signal returns. You will need run with --single-step=yes
+ to make this useful.
+
+* In general, signal handling should now be indistinguishable from
+ running natively.
+
+* Valgrind is built in Position Independent Executable (PIE) format if
+ the toolchain supports it. This allows it to take advantage of all
+ the available address space on systems with 4Gbyte user address
+ spaces.
+
+* Valgrind can now run itself (requires PIE support).
+
+* Syscall arguments are now checked for validity. Previously all memory
+ used by syscalls was checked, but now the actual values passed
+ are also checked.
+
+* Syscall wrappers are now more robust against bad addresses being
+ passed to syscalls; they will fail with EFAULT rather than killing
+ Valgrind with SIGSEGV.
+
+* Because clone() is directly supported, many non-pthread uses of
+ it will work. Partial sharing (where some resources are shared,
+ and some are not) is not supported.
+
Stable release 2.2.0 (31 August 2004) -- CHANGES RELATIVE TO 2.0.0
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
2.2.0 brings nine months worth of improvements and bug fixes. We