=============================================================================
Valgrind Roadmap
=============================================================================

This file serves as a rough roadmap for Valgrind development.  It shows a
minimal set of features we hope to implement for each version.  It's in
reverse chronological order.  It only mentions X.Y.0 releases, since
X.Y.[12...] releases fix bugs and don't add new features.

-----------------------------------------------------------------------------
3.2.0
-----------------------------------------------------------------------------
Scheduled for ???

-----------------------------------------------------------------------------
3.1.0
-----------------------------------------------------------------------------
Scheduled for around November 2005.

Definite
--------
* Get 32-bit and 64-bit programs working smoothly on AMD64 (Tom?).  Several
  levels of smoothness here, we should aim for at least level 3.

  1. Be able to build a 32-bit valgrind on a 64-bit machine, so you can
     build and install both, and manually choose between bin/valgrind and
     bin64/valgrind.
  2. Build both automatically when installing.
  3. Choose the appropriate executable automatically at startup just from
     "valgrind".
  4. With --trace-children=yes, allow 32-bit programs to exec 64-bit
     programs and vice versa, and invoke the appropriate Valgrind
     automatically.
  [All four levels done by Tom]

* Get PPC32 working usably with Memcheck (Julian).  Has already improved a
  lot since.  Get Cachegrind working with it (Nick).
  [Both done by Julian]

* Rewrite address space manager;  statically link the core with
  each tool;  remove all glibc dependencies (Julian).  
  [Done by Julian]

* What about --time-stamp=yes?
  [Fixed by Julian to give relative time since startup]

* Make it work with GCC 2.95 (bug #111781) -- don't put declarations after
  statements in blocks.  Do it after merging ASPACEM with the trunk.
  -Wdeclaration-after-statement is the GCC warning that detects this, but
  it is only present in GCC after 3.4.0 (ie. not in 3.0.X--3.3.X)...
  [Done by Tom and others]

* We need to reintroduce some kind of core/tool interface versioning,
  so that if external tools link with libcoregrind.a incompatibilities
  are detected.

Maybe
-----
* Get pthread modelling and Helgrind working again.  Requires function
  wrapping (Nick).
  [Won't happen for 3.1.0.  Function wrapping is difficult.]

* Reinstate Addrcheck and/or implement V-bit compression in Memcheck (?).
  [Won't happen for 3.1.0.]

* Allow suppressions by filename + line number? (Joseph Link's patch)

