22 Oct 2010:
 * Add a NullHandler for katcp library logging as recommended by Python logging 
   documentation.

12 Oct 2010:
 * Add regular expression pattern support to ?sensor-list and ?sensor-value
   requests.

8 Oct 2010:
 * Add .wait_connected() method to KATCP client.

4 Oct 2010:
 * Start of KATCP benchmarking effort.

28 Sep 2010:
 * Refactor Twisted KATCP into katcp.tx sub-package.
 * Update and flesh out example KATCP server.

27 Sep 2010:
 * Implementation of Twisted KATCP proxy. A proxy mutliplexes queries and
   sensor sampling from a single client to multiple KATCP servers.

17 Sep 2010:
 * Completion of Twisted KATCP DeviceServer.

16 Aug 2010:
 * Implementation of __eq__ and __ne__ for katcp.Message.

30 Jul 2010
 * katcp.katcp renamed to katcp.core to avoid module name clashing with
   package name.
 * Allow Python types to be used in addition to katcp.Sensor object types
   when constructing sensors.

27 Jul 2010
 * Custom __repr__ for katcp.Message added.

22 Jul 2010
 * Initial sensor tree implementation. A sensor tree is a directed acyclic
   graph of sensor dependencies. The tree triggers updates of dependent
   sensors when dependee sensors change.

15 Jul 2010
 * Start of work on Twisted katcp client and server implementations.

13 Jul 2010
 * Major rework of katcp.testutils.

11 Mar 2010
 * Add check to client to bail out of re-trying sends if the client
   has disconnected.

02 Feb 2010
 * Allow adding and removing sensors on the fly.

20 Jan 2010
 * Allow logging using .warn(fmt, arg1, arg2, ...) format as used
   in Python logging (allows msg formatting to be delayed until it
   is known whether the message will actually be logged).

26 Oct 2009
 * Add include_msg option to request decorator to give decorated
   requests a means to access the original message and the message id.
 * Add support for msg ids to callback client. 

23 Oct 2009
 * Add support for message ids to server and client request handling.
   * Server gained new .reply() and .reply_inform() methods that set
     message ids.
   * Server had .send_message() moved to ._send_message() since it is
     now rather important to use .reply() and .reply_inform() when
     replying. Old servers will need to upgrade. Calls to .send_message()
     should be replaced with calls to either .reply(), .reply_inform() or
     .inform(). Calls to .inform() should be changed to calls to
     .reply_inform() if they are part of the response to a request.
   * Client request handler handles message ids correctly.

22 Oct 2009
 * Add support for message ids to KATCP message and message parser classes.

21 Oct 2009
 * Add blocking_request implementation to callback client.
 * Reduce client sleep to 0.5s (from 1.0s) to make shutdown more responsive.
 * Add Message.reply_ok() method for checking that a message represents
   a successful reply.

07 Oct 2009
 * Fix bug in new callback client time outs.

05 Oct 2009
 * Support for commands timing out in callback client.

21 Sep 2009
 * Fix bug in client run loop where self._sock could become
   None while it was being used by select(..) and .recv(...).

02 Sep 2009
 * Implement TimestampOrNow kattype.

01 Sep 2009
 * Fix bug where AUTO strategy did not set updates on connect.

26 Aug 2009
 * Downgrade logging of successful request handling to DEBUG log level.

29 Jul 2009
 * Enable TCP_NODELAY on server and client sockets since katcp protocol messages
   are often small.

22 Jul 2009
 * Update version to 0.2.x.
 * Fix download url and license in setup.py.
 * Have Sphinx read the version number from katcp.VERSION and katcp.VERSION_STR.
 
29 Jun 2009
 * Start of CHANGELOG in preparation for 0.1.0 release.
