Managed D-Bus 0.3
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.
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
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
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