Releases: Kistler-Group/sdbus-cpp
v2.1.0
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
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 usereturn_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
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
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
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 underlyingsd_bus
instance - Some additional CMake-related and code bug fixes
v1.3.0
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
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
- 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
- [[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
update changelog: v0.9.0