Skip to content

Releases: Kistler-Group/sdbus-cpp

v2.1.0

20 Nov 22:51
Compare
Choose a tag to compare

This release brings a few new & interesting features and improvements:

  • Add SDBUSCPP_REGISTER_STRUCT macro to conveniently teach sdbus-c++ about user-defined structs
  • Extend the SDBUSCPP_REGISTER_STRUCT macro with serialization of user-defined structs as dicts, and deserialization of dicts into user-defined structs
  • Make createPlainMessage() function public
  • Solve the problem of sending large D-Bus messages properly (through the event loop thread)
  • Fix partially renamed BUILD_DOXYGEN_DOC CMake option
  • Change googletest to default version 1.14.0
  • Add version parameter to the xml2cpp codegen tool
  • A few other internal refactorings and improvements

v2.0.0

24 Apr 19:05
Compare
Choose a tag to compare

A new major version with revamped API, bringing numerous new features, simplifications, fixes and breaking changes improving not only API consistency, safety and expressiveness, but also performance. The complete list of breaking API/ABI/behavior changes can be found in the Using sdbus-c++ document, section Migrating to sdbus-c++ v2. This version is based on C++20 standard (but its API is backwards-compatible with C++17, skipping C++20 features if used in a C++17-based project).

  • Add strong types to public API for higher API safety
  • Add support for string_view as a D-Bus type representation
  • Enable compile-time D-Bus signature generation (saving run-time string manipulation)
  • Redesign Object vtable registration API
  • Improve Proxy signal subscription API
  • Refactor object manager API for consistency
  • Introduce native sd-event integration
  • Let callbacks take message objects by value
  • Simplify async D-Bus connection handling
  • Simplify async call state flag
  • Use std::optional for passing potential call errors
  • Make Variant constructor explicit
  • Rename and re-organize CMake options
  • Rename connection creation methods
  • Have all async function names end with *Async for consistency
  • Implement more flexible searching for sd-bus libs
  • Add new SDBUSCPP_SDBUS_LIB CMake configuration variable determining which sd-bus library shall be picked
  • Make Variant conversion operator explicit
  • Use sd-bus API to get the current message
  • Use sd_bus_match_signal() for signal registration
  • Provide also const char* overloads for high-level functions for efficiency
  • Disable move in generated adaptor and proxy classes
  • Improve and make more efficient some Message API
  • Add Slot-returning overloads of async method calls
  • Remove floating_slot_t tag and use return_slot_t instead
  • Add [[nodiscard]] to many relevant API functions
  • Add proper fix for timeout handling
  • Fix for external event loops in which the event loop thread ID was not correctly initialized (now fixed and simplified by not needing the thread ID anymore)
  • Remove deprecated stuff
  • Add SDBUSCPP_ prefix to CMake configuration variables to avoid conflicts with downstream projects
  • Require systemd of at least v238
  • Many other fixes and updates in code, tests, build system, CI, and documentation

v1.6.0

24 Apr 18:05
Compare
Choose a tag to compare

This release brings a couple of new features and improvements:

  • Add support for enums in D-Bus serialization and signatures
  • Add support for std::variant as an alternative C++ type for D-Bus Variant
  • Add support for implicit conversions between std::variant and sdbus::Variant
  • Fix missing includes

v1.5.0

26 Feb 07:31
Compare
Choose a tag to compare

This release brings some new features, improvements and bugfixes:

  • Improve handling of exceptions from callback handlers
  • Add support for async registration of matches
  • Correctly add libsystemd dependency to pkgconfi
  • Fix request name signal handling issue
  • Add INSTALL_TESTS CMake option
  • Minor UnixFd cleanups
  • Additional little fixes and updates in code, build system, CI, and documentation

v1.4.0

10 Oct 17:28
Compare
Choose a tag to compare

This release brings some new features, improvements and bugfixes:

  • Implement API for convenient asynchronous property get/set on the client-side
  • Add support for FreeBSD systems (including support for basu implementation of sd-bus on non-systemd machines)
  • Add support for direct, peer-to-peer connections
  • Add option to create IConnection directly from an underlying sd_bus instance
  • Some additional CMake-related and code bug fixes

v1.3.0

20 Aug 10:42
Compare
Choose a tag to compare

This release brings a number of new features, improvements, refactorings, and bugfixes:

  • Add support for light-weight proxies (proxies without own event loop threads)
  • Extend documentation with explicit mapping between D-Bus and corresponding C++ types
  • Support move semantics in generated adaptor and proxy classes
  • Adaptations for libsystemd v251
  • Fix for proper complete sending of long D-Bus messages by explicitly flushing them
  • Add support for std::future-based async calls
  • Fix race condition in async Proxy::callMethod
  • Fix pseudo-connection static lifetime issue with Phoenix pattern
  • Speed up performance of of serialization of arrays of trivial D-Bus types
  • Make sdbus::Struct a tuple-like class, so it's usable wherever std::tuple is
  • Add support for std::array, std::span and std::unordered_map as additional C++ types for D-Bus array types
  • Add support for libelogind as an addition to libsystemd
  • Add support for std::future-based async methods in codegen tool
  • Additional little fixes and improvements in code, build system, CI, and documentation

v1.2.0

09 Aug 07:53
Compare
Choose a tag to compare

This release brings a few new features, a number of improvements and refactorings, and bugfixes:

  • Add support for match rules
  • Add support for session bus connection at custom address
  • Add CMake variable for extra libsystemd config options
  • Use pseudo D-Bus connection for plain messages
  • Rename dont_request_slot tag to floating_slot
  • Add validity checks for names and paths
  • Remove executable flag from source files
  • Detect missing type after array declaration
  • Fix invalid assert on event fd
  • Enable move for ObjectPath and Signature
  • Add printer for std::chrono in googletest v1.11.0
  • Fix potential undefined behavior in creation of sdbus::Error
  • Additional little fixes and improvements in code, build system, and documentation

v1.1.0

22 Dec 12:19
Compare
Choose a tag to compare
  • Fix timeout handling for asynchronous method calls
  • Add support for unregistering signal handler
  • Add support for chrono literals in sdbus-c++-xml2cpp generator
  • Additional little fixes and improvements in code, build system, and documentation

v1.0.0

25 Oct 07:19
Compare
Choose a tag to compare
  • [[Breaking API change]] Fixed the API to send org.freedesktop.DBus.ObjectManager.InterfacesAdded and org.freedesktop.DBus.ObjectManager.InterfacesRemoved signals via the generated stubs layer.
    • StandardInterfaces.h: Split ObjectManager_adaptor and ManagedObject_adaptor.
  • New examples directory. First example covers the object manager. Further examples might follow.

We will try to avoid further breaking changes as much as possible. We will also stick with semantic versioning. If any future breaking change really isn't avoidable, the library gets a major version increment.

v0.9.0

15 Oct 13:24
1d930f3
Compare
Choose a tag to compare
update changelog: v0.9.0