v0.2.3 - Initially published version v0.2.4 - Fixed closing of file descriptor of event loop's semaphore on exec - Fixed interrupt handling when polling - Improved tutorial - Fixed issue with googlemock - Added object proxy factory overload that takes unique_ptr to a connection - Workaround: Clang compilation error when compiling sdbus::Struct (seems like an issue of Clang) v0.2.5 - Real fix for issue with sdbus::Struct inherited constructors - Little code refactorings and improvements v0.2.6 - Fixed memory leak in Message copy operations v0.3.0 - Introduced support for asynchronous server-side methods - Refactored the concept of Message into distinctive concrete message types - As this release comes with breaking API changes: * if you're using lower-level API, please rename 'Message' to whatever concrete message type (MethodCall, MethodReply, Signal) is needed there, * if you're using higher-level API, please re-compile and re-link your application against sdbus-c++, * if you're using generated stub headers, please re-compile and re-link your application against sdbus-c++. v0.3.1 - Fixed hogging the CPU by server with async methods (issue #15) v0.3.2 - Switched from autotools to CMake build system v0.3.3 - Minor fixes in tutorial examples - Add comment on threading traits of Variant and its const methods - Fix broken invariant of const Variant::peekValueType() method v0.4.0 - Introduce support and implementation of common D-Bus annotations - Remove hard-coded warning-related compiler options from the build system v0.4.1 - Change constexpr member into a getter method to be compatible across odr-usage rules of various compiler versions v0.4.2 - Improve documentation - Minor code improvements - Introduce sdbus-c++ performance tests with measurements v0.4.3 - Add another abstraction layer for sd-bus to improve isolation for unit testing - Minor code improvements for consistency and clarity - Not-existing interface name and object path fixes in integration tests v0.5.0 - Redesign of the Connection model for scalability, thread-safety, simplicity and clarity - [[Breaking ABI change]] Introduce support for asynchronous invocation of D-Bus methods on client-side - Revise and extend sdbus-c++ tutorial - Introduce stress tests that involve a D-Bus server and client interacting in dense communication in both sync and async ways - Compilation error fixes for older gcc versions v0.5.1 - Cleanups of CMakeLists.txt - Rename sdbus-c++ test executables for consistency - Rename sdbus-c++ stub code generator executable - Introduce generation of doxygen documentation - Improve documentation v0.5.2 - Simplify and unify basic API level callbacks for both sync and async methods v0.5.3 - Extend stress tests with dynamic object and proxy creation and destruction from multiple threads - [[Breaking ABI change]] Add getConnection() method to IObject - A few minor fixes v0.6.0 - This release comes with a number of API and ABI breaking changes (that hopefully lead to a more mature and stable API for near future): - Some constructs have been renamed (see below for details), you'll have to adapt your sources whether you're using the basic or the convenience sdbus-c++ API. - You'll also have to re-generate adaptor/proxy stubs with the new stub code generator if you're using them. - And you'll have to take care of manual registeration/deregistration in the constructors/destructors of your final adaptor and proxy classes. See updated using sdbus-c++ tutorial. - Cleaning up some names (of class, methods, files): * ConvenienceClasses.h/.inl/.cpp -> ConvenienceApiClasses.h/.inl/.cpp * IObjectProxy class -> IProxy * Interfaces class -> AdaptorInterfaces * Interfaces.h -> split into AdaptorInterfaces.h and ProxyInterfaces.h * createObjectProxy() method -> createProxy() - Add new unregister() virtual function to IObject and IProxy to allow for safe construction and destructions of D-Bus ojects and proxies hooked to live D-Bus connections. - Extend stress tests to allow testing safe initialization/deinitialization of objects and proxies - Fix gcc warnings - Use release v1.8.1 of googletest for tests v0.7.0 - [[Breaking ABI change]] Added full support for ObjectManager, Properties and other standard D-Bus interfaces (Reordering virtual functions in interface classes) - sdbus-c++ now can automatically download, build and incorporate libsystemd static library, which makes things pretty easy in non-systemd environments - Minor changes in generated proxy/adaptor code: * renamed interfaceName to INTERFACE_NAME to avoid potential naming clashes * signal emitting methods now begin with "emit" prefix and capitalized first letter of signal name - sdbus-c++ file organization has been adjusted to comply to de-facto OSS project standards - Build system improvements -- moving towards more modern CMake - Using googletest from master branch instead of v1.8.1 which has THREADS_PTHREAD_ARG issue when cross-compiling - Documentation improvements - Minor changes (renamings) in the code generated by sdbus-c++-xml2cpp generator - Other minor fixes and internal design improvements v0.7.1 - Fixed waiting in integration tests - Added object manager automatically in ObjectManager_adaptor constructor - Introduced support for unix fd type - Redesigned Message class hierarchy to be more idiomatic, clean and intent-revealing - Resolved a few clang-tidy warnings and suggestions - Extended the tutorial with info on standard D-Bus interfaces - Added protected non-virtual destructor in generated *_proxy/*_adaptor classes v0.7.2 - Rewrite UnixFd implementation from plain UnixFd struct to full-ownership-semantics UnixFd class v0.7.3 - Add ability to integrate with external event loops - Add getSenderName() method to Message - Skip GetMachineId integration test case when /etc/machine-id is not available v0.7.4 - Add support for custom timeout of D-Bus method calls - Add support for opening a connection to a remote system bus using ssh - Internal refactoring: Use tag dispatching to construct various types of Connection v0.7.5 - [[Breaking ABI change]] No more hiding from C++17: Move API code containing C++17 uncaught_exceptions calls from within library to public API - Add a method to retrieve the unique name of a connection v0.7.6 - Fixes of clang-8 errors and warnings v0.7.7 - Fix race condition of polling on D-Bus fd from two threads (event loop thread and sync D-Bus call thread) - Little ordering fix in stress tests v0.7.8 - Switch from thread_local to global bus instance that is used to create Variant instances (thread_local caused issues with Variant in very special inter-thread situations) v0.8.0 - [[Breaking ABI change]] Implement support for input & output parameter names for D-Bus methods and signals, which are used in introspection - Explain better in tutorial the design and how to use connections in relation to objects and proxies v0.8.1 - Switch to full C++17 support - Switch to more modern CMake (>=3.12) - Provide better names to event loop-related IConnection methods, keep old ones marked as deprecated for backwards compatibility v0.8.2 - Introduce support for cancellable async calls - Add getObjectPath() for proxy and object classes - Sanitize names of namespaces/methods/signals/properties/arguments in sdbus-c++-xml2cpp - Fix delivery of signals to multiple proxies subscribed to them - Fix file existence condition in sdbus-c++-xml2cpp - Fix CallData race condition in Proxy::callMethod - Fix integration tests for libsystemd older than 242 - Fix installation of public sd-bus headers in internal libsystemd build - Fix integration test cases failing in specific situations - Fix build with clang 9.0.1 and libcxx - Fix potential data race in Proxy's condition variable v0.8.3 - Fix build with gcc 8.3 - Address a few inconsistencies and make code more idiomatic - Clean up integration tests - Remove non-virtual-dtor warnings by making classes final - Update CMake configuration flag names - Fix unused variable warning for release builds - Introduce CI workflow based on GitHub Actions v0.9.0 - Provide CMake config and PkgConfig files for tools - Provide access to D-Bus message in high-level API - Add API to set signal destination - Add IProxy::getConnection() method - Add README and sdbus-c++ tutorial as additional pages in doxydocs - Enable default construction of PendingAsyncCall - Add API to get message path and message destination - Avoid propagating msg unpack exceptions to the event loop - Fix issue #145: signals are not filtered by sender - Fix race condition in Proxy and Object destructor - Fix seg fault in Message::peekType() - Add information to documentation about conan recipe - Add cpack to build debian packages, split the packages by components - Catch sdbus-c++ exceptions flying from Proxy callbacks to libsystemd - Add createDefaultBusConnection() method - Make resetting loop thread ID exception-safe - Support Error parameter in signal handlers - Add specific sections for tips and notes in the tutorial - A few additional documentation and test updates and improvements 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. 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.2.0 - 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