Managed D-Bus 0.3

Alp Toker alp at atoker.com
Thu Dec 14 04:10:04 PST 2006


Managed D-Bus/dbus-sharp 0.3 is out, along with a simultaneous release 
of dbus-sharp-glib 0.2. Based around a clean-room implementation of the 
D-Bus protocol and specification version 0.11, dbus-sharp is a 
full-featured .NET IPC library that is fully compatible with libdbus and 
released under the MIT license.

See http://www.ndesk.org/DBusSharp

0.2 (which was unannounced) brought complete support for reading and 
writing big-endian messages.

It added to the provided "org.freedesktop.DBus" interface description:

string[] ListActivatableNames ();

These undocumented calls were also added with the caveat that they are 
marked "Obsolete":

string[] ListQueuedOwners (string name);
uint GetConnectionUnixProcessID (string connection_name);
byte[] GetConnectionSELinuxSecurityContext (string connection_name);

The 0.3 release brings:

* Support for FreeBSD socket credentials
* Enhanced reporting of error conditions and exceptions
* Extensive message validation when DBUS_VERBOSE is set
* Complete support for object tree XML introspection
* Improved handling of threaded and asynchronous calls
* Correct handling of addresses including escaping/unescaping
* Support for the "tcp" transport method
* Any type can now be passed by value, not just C# structs
* Fast paths for certain blittable data structures
* Several smaller correctness and performance fixes

There is one API-breaking change:

* The enum formerly named "NameReply" is now "RequestNameReply"

This change was essential to make the implementation match the naming 
conventions set out in the specification.

There has been a lot of exciting work done outside of the core managed 
D-Bus implementation in the time since 0.1 was released:

* Aaron Bockover gave a well-attended presentation on managed D-Bus at 
GNOME Live! The amount of interest from the GNOME camp is very encouraging.

GNOME applications that have made releases bundling managed D-Bus 
include Banshee, F-Spot and Tomboy as well as VMX Manager, dcsharp (a 
file sharing program), LAT (LDAP Administration Tool) and Landell (VoIP 
and IM client). What is interesting is that many of these programs go 
beyond using managed D-Bus for their own interfaces, also using it to 
consume D-Bus APIs provided by GNOME Power Manager, Network Manager, 
Notifications and Helix.

Some applications (new and existing) are also now experimenting with 
code that uses managed D-Bus in creative ways, such as exposing bus 
names over UPnP and exploiting the "tcp" transport method to share 
sticky notes. I look forward to talking about these in the next set of 
release notes.

Since managed D-Bus is written in purely managed code, the same build 
can now be deployed across 32 and 64 bit platforms, and has been used on 
Linux ARM (including the Nokia 770, Sharp Zaurus and Palm Tungsten T3), 
x86, AMD64, FreeBSD, Mac OS X and Win32. Thanks to all the .NET hackers 
who have made "compile once, run anywhere" a reality!



More information about the dbus mailing list