Dbus-cxx version 2.0 released

17 views
Skip to first unread message

Robert Middleton

unread,
Jan 26, 2021, 9:42:30 PM1/26/21
to Dbus-cxx
I am pleased to announce the newest version of dbus-cxx, version 2.0.0, is now live and available for adoption by library users.

This release represents countless hours of work, and a verify significant rewrite of the internals of dbus-cxx, with an API that is largely compatible with existing dbus-cxx code.  This rewrite means that dbus-cxx no longer depends on libdbus, and is now a complete standalone implementation of the dbus protocol.  As well, features that were very hard to implement before(such as maps/lists inside of variants) have been implemented into the library.

The old, 0.x.y version(aka dbus-cxx-1.0) is hereby deprecated, and is unlikely to be updated except for minor bugfixes.

With this version of dbus-cxx, the intention moving forward is to provide an API and ABI compatible interface for new versions.  This update also makes extensive use of new C++ features, and thus requires at least C++17 to compile.

A quick changelog follows:
  • Removal of libdbus, converting dbus-cxx into a full implementation, not a binding.  This should eliminate various multithreading issues associated with libdbus.
  • Proper support for both GLib and Qt to make integration with these frameworks easy
  • DBus properties are now available
  • Variants can now hold an object of any type, and are no longer templated.
  • DBus structs are now represented as a std::tuple
  • Signals and methods can now have template arguments of any length
  • Exceptions are no longer thrown as pointers
  • Enums are now strongly typed
  • C++17 standard locking mechanisms(std::mutex, std::unique_lock, etc) are now used instead of pthreads
  • Typedefs have been removed from the code for pointers to make use of std::shared_ptr
  • Dbus-cxx classes should now be ABI compatible with the use of private data classes.  This should allow more flexible changes in the future.
  • Added a large number of unit tests to ensure that the implementation works correctly
  • Removed some types that were supported by dbus-cxx, but not by dbus directly(char, float, int8_t)
  • Added better logging messages, as well as categorized log messages based on the class that they log

As always, tarballs of the source may be found on both Sourceforge and Github:
https://github.com/dbus-cxx/dbus-cxx/releases/tag/2.0.0
https://sourceforge.net/projects/dbus-cxx/files/dbus-cxx/2.0.0/

The dbus-cxx website is on Github:
https://dbus-cxx.github.io/

-Robert Middleton
Reply all
Reply to author
Forward
0 new messages