Change Log¶
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
(UNRELEASED) vX.X.X (20XX-XX-XX)¶
Added¶
Changed¶
Removed¶
Deprecated¶
Fixed¶
General Note¶
The last time CppMicroServices was upgraded to a new version on GitHub was two years ago. We think it will not be useful to include every change since then; below we have captured all of the relevant changes between v3.6.0 and v3.7.2.
Added¶
- [Log Service] LogService Implementation
- [Declarative Services] Added thread pool to DS
- [Core Framework] Anymap erase and compare
- Provide updated manifest.json schema in repo
- [Configuration Admin/Declarative Services] Configadmin ds integration
- GitHub Actions used as CI/CD solution
- [AsyncWorkService] Added AsyncWorkService interface to CppMicroServices
- GitHub Actions runs workflow for clang build with ASAN, TSAN, and UBSAN enabled
- [AsyncWorkService] AsyncWorkService DS Integration
- [AsyncWorkService] AsyncWorkService ConfigAdmin Integration
- [Security/Core Framework] bundle validation mechanism
Changed¶
- [Core Framework] Migrated all test driver tests to gtest
- Optimize the string creation in us_service_interface_iid<void>()
- [Core Framework] Improve the performance of removing service listeners
- [Declarative Services] Reduce possibility for symbol conflicts with autogenerated DS files
- Switch project to c++17
- Upgraded to CMake 3.17
- [Core Framework] Switch code to use std::string_view instead of abseil
- [Core Framework] Integrate LogService core framework and add more detail to exception messages
Removed¶
- [Core Framework] Remove Bundle Threads
- TravisCI and Appveyor removed as CI/CD solution
Deprecated¶
Fixed¶
- [Core Framework] Fix ServiceTracker race
- [Core Framework] Made ToJSON for strings do proper escaping of special characters
- [Core Framework] Fix issues with line endings in BundleResourceTest.cpp test
- Fix #301 so TSAN buidls work on Linux
- [Configuration Admin] ConfigAdmin remove notification when configuration object is created
- [Configuration Admin] Fix TestConcurrentBindUnbind error
- [Core Framework] Fix ServiceTracker race
- [Configuration Admin] RemoveBoundServicesCache fix
- [Declarative Services] Prevent nullptr from being passed to service constructors
- [Declarative Services] fix segfault when service class ctor throws
- [Core Framework] Fix bug when an AddingService method returns nullptr
- [Configuration Admin] Fix deadlock in ConfigAdmin Update, UpdateIfDifferent, and Remove
- [Configuration Admin] Fix ConfigurationAdmin ListConfigurations and Fix Race Conditions in DS
- [Resource Compimler] Allow ResourceCompiler to accept Unicode Command-line arguments
- [Core Framework] service tracker doesn’t track services after a close and then open
- Fix warning suppression leakage to non-CppMicroServices code inside translation units
- [Core Framework] Fix leak in ServiceListeners.cpp
- [Core Framework] Ensure that any BundleContext functions do not segfault if the bundle context is invalid
- Fixed issue where DS/CA do not build if US_BUILD_TESTING isn’t ON
- Fixed build issues when building in “getting_started” dir
- [Core Framework] Fix check-then-act-race in GetServiceFromFactory
- [Core Framework] Fix bug in FindResources() for data-only bundles
- [Core Framework] Fix check-then-act race for BundleContext
- [Declarative Services] Fix inheritance for ComponentException
- [Core Framework] Add –max-threads flag for core framework mem test
- [Core Framework] Fix leaked file handle
Added¶
Changed¶
Removed¶
Deprecated¶
Fixed¶
Changed¶
- Migrate a handful of tests from the legacy test suite to gtest based test suite
- Improve shared library loading error messages
- c++17 compatible - https://github.com/CppMicroServices/CppMicroServices/pull/465 - https://github.com/CppMicroServices/CppMicroServices/pull/479
Deprecated¶
Fixed¶
- Correctly install Declarative Services and LogService headers
- Infinite loop in GetCurrentWorkingDir
- Use cross build objcopy
- Service reference dependency deadlock
- Instantiating multiple service implementations within the same service component
- Codecov integration
- BundleRegistry deadlock
- Remove unnecessary copying of AnyMap
- Minimum and maximum cardinality values
- Error if duplicate service component reference names are used
- Improve performance of ServiceTrackers
Added¶
- Declarative Services
- Expose checksum from zip archive.
- Framework property (org.cppmicroservices.library.load.options) to control library loading options on macOS and Linux.
- Add gmock
Changed¶
Removed¶
Deprecated¶
- The following Bundle method functions:
GetProperties
GetProperty
GetPropertyKeys
Fixed¶
- static ServiceTracker object crashes in ServiceTracker::Close()
- Does the ServiceTracker deleter close the service?
- Optimize peak heap allocation when installing bundles
- Change GetHeaders API to return a const ref
- How do service consumers know whether to use BundleContext::GetService or ServiceObjects?
- Add a testpoint to validate the return value of ServiceFactory::GetService
- Invalid Bundle causes crash on method invocation
- Use correct framework event severity and exception types for service factory errors
- Raspberry Pi arm build failing
- Service ctor exception crash
- Update library loading error messages
- Unknown Cmake Command “add_compile_definitions”
- GetChildResources() should not have a dependency on GetChildren()
- Improved code coverage to 90%
- Various performance improvements to:
- Reduce the number of open file handles
- Reduce peak heap memory utilization
- AtCompoundKey
- ServiceTracker
- Service look up
- Bundle installs
Added¶
Added¶
Fixed¶
- Fix a race condition when getting and ungetting a service. #202
- Make reading the current working directory thread-safe. #209
- Guard against recursive service factory calls. #213
- Fix LDAP filter match logic to properly handle keys starting with the same sub-string. #227
- Fix seg fault when using a default constructed LDAPFilter instance. #232
- Several fixes with respect to error code handling. #238
- IsConvertibleTo method doesn’t check for validity of member. #240
v3.1.0 (2017-06-01)¶
Changed¶
Deprecated¶
The following BundleContext member functions:
RemoveBundleListener
RemoveFrameworkListener
RemoveServiceListener
And the variants of
AddBundleListener
AddFrameworkListener
,AddServiceListener
that take member functions.
The free functions:
ServiceListenerMemberFunctor
BundleListenerMemberFunctor
BindFrameworkListenerToFunctor
The functions
ShrinkableVector::operator[std::size_t]
ShrinkableMap::operator[const Key&]
v3.0.0 (2017-02-08)¶
See the migration guide for moving from a 2.x release to 3.x.
Added¶
- Added MinGW-w64 to the continuous integration matrix #168
- Include major version number in library names and install dirs #144
- Integrated coverity scan reports #16
- Added OS X to the continuous integration matrix #136
- Building for Android is now supported #106
- Enhanced the project structure to support sub-projects #14
- The bundle life-cycle now supports all states as described by OSGi and is controllable by the user #25
- Added support for framework listeners and improved logging #40
- Implemented framework properties #42
- Static bundles embedded into an executable are now auto-installed #109
- LDAP queries can now be run against bundle meta-data #53
- Resources from bundles can now be accessed without loading their shared library #15
- Support last modified time for embedded resources #13
Changed¶
- Fix up bundle property and manifest header handling #135
- Introduced C++11 features #35
- Re-organize header files #43, #67
- Improved memory management for framework objects and services #38
- Removed static globals #31
- Switched to using OSGi nomenclature in class names and functions #46
- Improved static bundle support #21
- The resource compiler was ported to C++ and gained improved command line options #55
- Changed System Bundle ID to
0
#45 - Output exception details (if available) for troubleshooting #27
- Using the
US_DECLARE_SERVICE_INTERFACE
macro is now optional #24 - The
Any::ToString()
function now outputs JSON formatted text #12
v2.0.0 (2013-12-23)¶
Major release with backwards incompatible changes. See the migration guide for a detailed list of changes.
Added¶
- Removed the base class requirement for service objects
- Improved compile time type checking when working with the service registry
- Added a new service factory class for creating multiple service instances based on RFC 195 Service Scopes
- Added ModuleFindHook and ModuleEventHook classes
- Added Service Hooks support
- Added the utility class
us::LDAPProp
for creating LDAP filter strings fluently - Added support for getting file locations for writing persistent data
Removed¶
- Removed the output stream operator for
us::Any