2019-03-15 12:09:55 +01:00
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
2019-03-24 22:18:48 +01:00
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
2019-03-28 16:08:58 +01:00
v0.5.0
- Redesign of the Connection model for scalability, thread-safety, simplicity and clarity
2019-05-29 22:41:59 +02:00
- [[Breaking ABI change]] Introduce support for asynchronous invocation of D-Bus methods on client-side
2019-03-28 16:08:58 +01:00
- 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
2019-03-29 22:28:58 +01:00
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
2019-04-03 00:17:31 +02:00
v0.5.2
- Simplify and unify basic API level callbacks for both sync and async methods
2019-04-09 20:56:33 +02:00
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
2019-04-13 21:38:22 +02:00
2019-04-15 21:05:54 +02:00
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):
2019-04-13 21:38:22 +02:00
- 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
2019-04-28 17:09:37 +02:00
2019-06-04 21:39:29 +02:00
v0.7.0
2019-06-04 21:29:04 +02:00
- [[Breaking ABI change]] Added full support for ObjectManager, Properties and other standard D-Bus interfaces (Reordering virtual functions in interface classes)
2019-05-26 15:37:32 +02:00
- sdbus-c++ now can automatically download, build and incorporate libsystemd static library, which makes things pretty easy in non-systemd environments
2019-06-04 21:29:04 +02:00
- 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
2019-04-28 17:09:37 +02:00
- sdbus-c++ file organization has been adjusted to comply to de-facto OSS project standards
2019-05-26 15:37:32 +02:00
- Build system improvements -- moving towards more modern CMake
2019-04-28 17:09:37 +02:00
- Using googletest from master branch instead of v1.8.1 which has THREADS_PTHREAD_ARG issue when cross-compiling
- Documentation improvements
2019-05-29 22:41:59 +02:00
- Minor changes (renamings) in the code generated by sdbus-c++-xml2cpp generator
- Other minor fixes and internal design improvements
2019-06-12 09:18:55 +02:00
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
2019-07-08 10:01:11 +02:00
v0.7.2
- Rewrite UnixFd implementation from plain UnixFd struct to full-ownership-semantics UnixFd class
2019-10-13 15:39:32 +02:00
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
2019-11-03 20:40:13 +01:00
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
2019-11-10 17:43:14 +01:00
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
2020-01-05 22:49:26 +01:00
v0.7.6
- Fixes of clang-8 errors and warnings
2020-01-19 18:59:36 +01:00
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
2020-01-25 23:38:54 +01:00
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)
2020-02-01 13:56:13 +01:00
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
2020-02-02 02:31:39 +01:00
v0.8.1
- Switch to full C++17 support
- Switch to more modern CMake (>=3.12)
2020-02-02 22:22:26 +01:00
- Provide better names to event loop-related IConnection methods, keep old ones marked as deprecated for backwards compatibility
2020-06-17 15:29:46 +02:00
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
2020-09-11 22:29:15 +02:00
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
2021-03-30 13:41:41 +02:00
2021-10-15 15:20:46 +02:00
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
2021-10-18 13:27:25 +02:00
- Fix issue #145: signals are not filtered by sender
2021-10-15 15:20:46 +02:00
- 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
2021-10-18 17:21:19 +02:00
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.
2021-12-22 13:17:20 +01:00
- 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
2022-08-09 09:50:33 +02:00
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
2023-08-20 11:45:44 +02:00
v1.3.0
- 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
2023-10-10 19:26:21 +02:00
v1.4.0
- 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 fixes
2024-02-26 08:29:35 +01:00
v1.5.0
- 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
2024-04-24 20:04:34 +02:00
v1.6.0
- 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
2023-01-21 01:47:24 +01:00
v2.0.0
- Breaking changes in API/ABI/behavior:
2023-10-24 21:56:47 +02:00
- In *synchronous* D-Bus calls, the proxy now **always** blocks the connection for concurrent use until the call finishes (with either a received reply,
an error, or time out). If this creates a connection contention issue in your multi-threaded design, use short-lived, light-weight proxies, or call
the method in an asynchronous way.
- Signatures of callbacks `async_reply_handler`, `signal_handler`, `message_handler` and `property_set_callback` were modified to take input message objects
by value, as opposed to non-const ref. Callee assumes ownership of the message. This API is more idiomatic, cleaner and safer.
- The `PollData` struct has been extended with a new data member: `eventFd`. All hooks with external event loops shall be modified to poll on this fd as well.
- `PollData::timeout_usec` was renamed to `PollData::timeout` and its type has been changed to `std::chrono::microseconds`. This member now holds directly
what before had to be obtained through `PollData::getAbsoluteTimeout()` call.
- `PollData::getRelativeTimeout()` return type was changed to `std::chrono::microseconds`.
- `IConnection::processPendingRequest()` was renamed to `IConnection::processPendingEvent()`.
refactor: make Variant constructor explicit (#370)
This makes the library more robust and prone to user's errors when the user writes an extension for their custom type. In case they forget to implement a serialization function for that type and yet insert an object of that type into sdbus::Message, the current behavior is that, surprisingly, the library masks the error as it resolves the call to the Variant overload, because Variant provides an implicit template converting constructor, so the library tries to construct first the Variant object from the object of custom type, and then inserting into the message that Variant object. Variant constructor serializes the underlying object into its internal message object, which resolves to the same message insertion overload, creating an infinite recursion and ultimately the stack overflow. This is undesired and plain wrong. Marking this Variant converting constructor solves these problems, plus in overall it makes the code a little safer and more verbose. With explicit Variant constructor, when the user forgets to implement a serialization function for their type, the call of such function will fail with an expressive compilation error, and will produce no undesired, surprising results.
2023-10-25 20:01:18 +02:00
- `Variant` constructor is now explicit.
2023-12-30 18:40:38 +01:00
- Object D-Bus API registration is now done through `IObject::addVTable()` method. The registration is immediate; no `finishRegistration()` call is needed anymore.
2023-01-21 01:47:24 +01:00
- Systemd of at least v238 is required to compile sdbus-c++
- A 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)
- Other simplifications, improvements and fixes springing out from the above refactoring