D-Bus 1.2.1 (04 April)
==
- Due to issues putting the re-licensing effort on hold indefinitely, it has 
  been decided to move to 1.2.x versioning scheme.  Being that 1.1.20 is 
  considered to also be 1.2.0 and this being the second release in the 1.2.x 
  stable series we have versioned this release 1.2.1. This release contains a 
  number of bug fixes identified after 1.1.20.
- compiles under some older versions of glibc
- compiles without X support once again
- fix stuck server grab if dbus-launch is run in an existing D-Bus X session
- various Mac OSX build fixes added
- don't use the broken poll call on Mac OSX
- better checks for linker flag support should allow D-Bus to link under
  various linkers
- exit_on_disconnect is set after the connection registers with a bus so we 
  don't exit if we get a disconnect during the handshake
- dicts now work correctly with dbus-send
- inotify backend is now less aggressive
- pending calls expire correctly
- memleak of uuid when the bus is autolaunched fixed

D-Bus 1.1.20 - "Conisten Water" (27 Febuary)
==

- This is the next generation supported STABLE release of D-Bus. For all 
  intents and purposes this is the 1.2.0 release WITHOUT the planned X11/MIT 
  license change due to a couple of license holders who have yet to respond.
  For the most part this license change is being persued to simplify licensing
  issues and fix a couple of licensing courner cases.  When this happens D-Bus
  will be released under the 1.2.0 version.

- D-Bus 1.0.x effectively goes into security fix mode and will only be
  updated for major issues.

- Fixed CVE-2008-0595 - security policy of the type <allow send_interface=
  "some.interface.WithMethods"/> work as an implicit allow for
  messages sent without an interface bypassing the default deny rules and 
  potentially allowing restricted methods exported on the bus to be executed
  by unauthorized users. 

- Fixes dbus-launch so the session bus goes away so does D-Bus

- Builds against latest gcc/glibc changes

- Correctly unref connections without guids during shutdown

- About the name: Submitted by Greg K Nicholson, Conisten Water is a lake in 
  Cumbria, England where several water speed records have been broken. Between 
  1956 and 1959 Sir Malcolm's son Donald Campbell set four successive records on  the lake in Bluebird K7, a hydroplane.
  (Wikipedia http://en.wikipedia.org/wiki/Coniston_Water#Waterspeed_record)

D-Bus 1.1.4 - 1.2.0RC2 (17 January 2007)
==
- Fixes inotify support

D-Bus 1.1.3 - 1.2.0RC1 (15 January 2007)
==

- This release is intended to be Release Candidate 1 of major release
  D-Bus 1.2.0.  If nothing is found to be wrong with this release it
  will become 1.2.0 within a week.  If we need to make major changes
  we will release an RC2 and start the process over again.

- This is a development release, so API's may still change if problems
  are found (though this is extreamly unlikely).

- DTD for the introspection format is fixed and uploaded to the servers

- Sources now reside in a git repository at 
  http://gitweb.freedesktop.org/?p=dbus/dbus.git;a=summary

- Argument path matching of the type arg0path='/aa/bb/' is now supported
  (see the specification for more information)

- New error org.freedesktop.DBus.Error.ObjectPathInUse added

- Autolaunched busses now save their parameters in X11 if possible making them
  behave closer to busses launched through the normal mechanisms 

- inotify is now the default backend for watching configuration file changes

- More support for the AIX platform has been added

- Numerous bug fixes and performance enhancements

D-Bus 1.1.2 (27 July 2007)
==

- This release is intended to be a feature complete beta for stable
  release 1.2.0, please test it. 1.2.0 will follow pretty soon if no
  major problems are found.  We'll do more betas if significant
  changes are made.

- This is a development release, so API's may still change if problems
  are found (though we will try hard not to).

- The system bus now supports starting services on demand. This uses a
  setuid helper program because system bus daemon runs as a nobody
  user, while services it launches may need to run as a different
  user.

  ***Extra eyes auditing the setuid helper are encouraged and would be
  timely right now, before 1.2.0***

  A design doc is available in doc/system-activation.txt

- The TCP address format has been enhanced, such that TCP may be
  actually usable.  The dbus-daemon man page describes the new
  elements in the address format.  1.1.1 had added an all_interfaces
  flag to the format, which has been removed in favor of a cleaner
  approach.

- Some thread-related bugs have been fixed, these are important fixes
  if you are using multiple threads with libdbus, and not important
  otherwise.


D-Bus 1.1.1 (18 June 2007)
==
- This is a development release, unless you need specific 
  functionality please use the stable releases as API's may change
  (though we will try hard not to)
- The bus daemon now generates a globally-unique ID for itself, which is available 
  using the convenience function dbus_bus_get_id(). Use this as a unique ID 
  for a user's session, for example.
- dbus_server_get_id(), dbus_connection_get_server_id() now available to access
  the unique ID of a particular address
- dbus_watch_get_fd() deprecated since it had unclear cross-platform semantics.
  dbus_watch_get_unix_fd() and dbus_watch_get_socket() replace it.
- support ANONYMOUS mechanism for authentication, which allows a client to 
  authenticate as nobody in particular
- add API dbus_connection_set_allow_anonymous() which will allow the message
  stream to begin if the client auths as anonymous (otherwise, the client 
  will be dropped unless they auth as a user).
- the ANONYMOUS support means you can now use D-Bus (without a bus daemon) as 
  a protocol for a network service provided to anonymous Internet or LAN  
  clients
- many internal changes to better support the Windows port, though the 
  port is still not complete in this release
- some improved documentation and return_if_fail checks
- some small bug fixes

D-Bus 1.1.0 (25 May 2007)
==
- first release in the development series, unless you need specific 
  functionality please use the stable releases as API's may change
  (though we will try hard not to)
- better eavesdropping support now picks up reply messages for debugging
- .pc file now lists the directory the daemon is installed into (daemondir)
- GetAll call added to the properties interface
- support for message serialization added for use with external transports like
  TUBES!!!
- many bugs fixed
