Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

multiple thread sanitizer issues in usFrameworkTests #846

Closed
jeffdiclemente opened this issue May 3, 2023 · 2 comments
Closed

multiple thread sanitizer issues in usFrameworkTests #846

jeffdiclemente opened this issue May 3, 2023 · 2 comments
Assignees
Labels

Comments

@jeffdiclemente
Copy link
Member

These errors are from the test log: https://github.com/CppMicroServices/CppMicroServices/actions/runs/4872584091/jobs/8690974464?pr=845

These issues are reproducible by building the CppMicroServices code base with US_ENABLE_TSAN enabled on Linux and running usFrameworkTests repeatedly in a loop.

@ShivamNegi
Copy link
Contributor

I can take this up.

@jeffdiclemente jeffdiclemente self-assigned this May 19, 2023
@jeffdiclemente
Copy link
Member Author

some or all of these tsan errors appear to be false positives. See google/sanitizers#1259 and llvm/llvm-project#62623 for details.

@tcormackMW tcormackMW self-assigned this Jul 6, 2023
insi-eb pushed a commit to insi-eb/CppMicroServices-cpp14 that referenced this issue Sep 12, 2023
* firstCommit

* events is all wait for false flags

* removed txt files

Signed-off-by: tcormack <tcormack@mathworks.com>

* serviceTracker tsan fixes

Signed-off-by: tcormack <tcormack@mathworks.com>

* deleted txt

Signed-off-by: tcormack <tcormack@mathworks.com>

* tsanSupppressions updated for various tests

Signed-off-by: tcormack <tcormack@mathworks.com>

* removed text files

Signed-off-by: tcormack <tcormack@mathworks.com>

* removed test

* added comment

Signed-off-by: tcormack <tcormack@mathworks.com>

* updated suppresssions file with commentss

* add sleep to stop spin

* add unused flag to lock

Signed-off-by: tcormack <tcormack@mathworks.com>

* revert reformat

* formatting

* formatting

* reformat

* updating comments

* update comment

---------

Signed-off-by: tcormack <tcormack@mathworks.com>
jeffdiclemente pushed a commit that referenced this issue Sep 12, 2023
* firstCommit

* events is all wait for false flags

* removed txt files



* serviceTracker tsan fixes



* deleted txt



* tsanSupppressions updated for various tests



* removed text files



* removed test

* added comment



* updated suppresssions file with commentss

* add sleep to stop spin

* add unused flag to lock



* revert reformat

* formatting

* formatting

* reformat

* updating comments

* update comment

---------

Signed-off-by: tcormack <tcormack@mathworks.com>
Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>
tcormackMW added a commit that referenced this issue Oct 27, 2023
* Fix race with DS service object construction (#801) - C++14 variant (#828)

* Fix race with DS service object construction

A race occurs when DS is constructing a service object with injectable mandatory service dependencies whereby any bound service dependencies could no longer be available because another thread unregistered any of the bound service dependencies.

Given that a ComponentContext is constructed only after all the service dependencies has been satisfied, if during ComponetContext construction any of the bound service dependencies are no nullptrs then throw and fail to construct the service object. This fixes a failure mode where a service constructor can be called with a nullptr service object when the service dependency is defined as mandatory and injection is true.

Also noticed that one of the test bundle project was exceeding the path limit on Windows, so shortened the project name to mitigate that problem.



* Add more tests

Added more tests and fixed up some error messaging



---------

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>
Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com>

* Make a small performance improvement (#808) (#830)

stop copying the std::pair in the range-based for. This helps improve the speed of RegisterService

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com>

* 701 - prepare v3.6.2 release (#831)

* Remove jsoncpp from framework build to get up-to-date with #773

jsoncpp itself was already upgraded in v3.6.1.

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>

* Only run these tests if threading support is enabled. (#669)

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>

* Rerun clang-format to match v3.7.5

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>

* Update Changelog and versions to match v3.7.5 content

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>

---------

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>
Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>
Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com>

* Fix undefined behavior in LDAPExpr::Trim (#835) (#836)

if there is no space in the string on the second str.erase, calling
str.find_last_not_of() returns std::string::npos. Trying
to add 1 to npos leads to undefined behavior reported by UBSAN.

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>

* Nested ldap queries (#794) (#886)

Added the capability to do ldap queries with nested keys.

Queries are first checked against the compound key and if a value is found it is returned.

If a value is not found, the key is split into segments on the "." character and then the AnyMap is "walked down" to look for a path to the value in sub-maps addressed by the segments of the key. So, if the value of the key "a.b.c" is queried,

1. Split the key into ["a","b","c"]
2. Check the top level map for a sub-map at key "a". If one is found, look in that map for a key "b" with a sub-map, and in that sub-map for a value with key "c". If found, return it.
3. If the top level map does NOT contain a key "a", look for a sub-map at key "a.b". If one is found, look in that sub-map for a value with a key of "c". If one is found, return it.
4. continue this algorithm down as many levels as there are segments until either the value for the last segment is found (in which case it is returned), or one is not found, in which case the lookup fails.

Additional changes to cherry-picked commit:
* convert from C++-17 to C++-14 with Abseil (include more parts of Abseil)
Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>

* Add benchmark test infrastructure to DS (#813) (#887)

* Added benchmark suite for DS

- Added benchmark test for GetService for service provided by DS



* Removed unnecessary lines from CMakeLists.txt for DS benchmark tests

* Trying again

* Refactored DS test directory to mimic 'framework' test structure

* Fixed shadowed function

* Actually fix the function shadowing this time?

* Removed unnecessary bundles/link-time deps

* Updated CHANGELOG.rst

---------

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>
Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com>
Co-authored-by: alchrist <alchrist@mathworks.com>

* Updated MSVC Analysis to 0.1.1 and checkout to v3 (#824) (#888)

Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com>

* Upgrade Build: Add Ubuntu 22.04, remove Ubuntu 18.04 (#810) (#889)

Fixes #758

Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com>

* Automate Performance Testing and Deploy Results (#829) (#890)

* Create performance_windows.yml

Adding new workflow for running performance tests



* Using personal token



* Revert "Using personal token"

This reverts commit d672a80.

* Uploading results to fork



* removing https



* Changing ph branch



* Trying to deploy on another branch



* Commit results to gh-pages branch



* Added Performance Badge



* Added target for performance badge



* Update performance_windows.yml



* Removing hardcoded paths

- Using ENV instead of hard coded build paths
- Increased threshold to 20%



* Removed Cache operation



* Removing performance branch from workflow



* Name changed to CppMicroServices Benchmarks



---------

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>
Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com>
Co-authored-by: Aaditya <aadityap@mathworks.com>

* Brian decl services (#833) (#891)

* Performance micro-optimizations



* Fix formatting

* More performance improvements

* fixed up compilation errors.

* deal with unused variable.

* restore API

ServiceRegistrationBase::SetProperties(ServiceProperties const&)

---------




Resolved conflict with previous C++14 changes (absl::string_view).

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>
Co-authored-by: Brian Weed <brian_weed@yahoo.com>

* ComponentManagermemory reallocation bug fix (#834) (#892)

* ComponentManagermemory reallocation bug fix

The ComponentManagerImpl object contained a shared_ptr to the vector of all ComponentManagerImpl objects. When adding an item to this vector, the resizing of the vector caused a memory allocation error. Fixed by removing the vector from the ComponentManagerImpl object.

* Fix for ConfigurationNotifier::CreateFactoryComponent memory allocation error

When a ComponentManager is created, it must be added to the managers map in SCRBundleExtension. This is necessary so that when the bundle is stopped, the ComponentManager can be destroyed.
The old code was holding a shared_ptr to the managers map in the ComponentManagerImpl object. This caused a memory reallocation error when a ComponentManager was added to the map and the map needed to be resized.
This fix adds an AddComponentManager method to the SCRBundleExtension object so that CreateFactoryComponent can add a manager to the managers map when it is created. In order to find the SCRBundleExtension, the map of SCRBundleExtensions was moved out of SCRActivator and into a new class called SCRExtensionRegistry.

* Rest of the ConfigurationNotifier fix



* Fix errors in minimum gcc build

Signed-off by: The MathWorks Inc. < pelliott@mathworks.com>

* Responded to code review comments

Responded to code review comments. Added tests for SCRBundleExtension and SCRExtensionRegistry. Signed off by - The MathWorks, Inc. <pelliott@mathworks.com>

* Update ConfigurationNotifier.cpp

Update error message. Signed off by The MathWorks, Inc. <pelliott@mathworks.com>

* Update SCRExtensionRegistry.hpp

Formatting issue. signed-off by The MathWorks, Inc. <pelliott@mathworks.com>

* CreateFactoryComponent changes

ConfigurationNotifier::CreateFactoryComponent will log an exception if it can't find the SCRBundleExtension in the ExtensionRegistry instead of throwing a std::runtime_error exception. Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com>

* Update ConfigurationNotifier.cpp

Fixed call to std::exception. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Update ConfigurationNotifier.cpp

Removed throw in CreateFactoryComponent. Error message is already logged, no throw needed. Signed-off-by - The MathWorks, Inc. <pelliott@mathworks.com>

---------



Adapt implementation and test code to C++14:
* move initialization statements out of if clause
* adapt assignment construction in test code calling deleted move constructor

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>
Co-authored-by: pelliott-mathworks <67922241+pelliott-mathworks@users.noreply.github.com>

* Default any map type (#844) (#893)

* Fixed undefined behavior in Any::operator==(value)

* Revert "Fixed undefined behavior in Any::operator==(value)"

This reverts commit 3066fe1.

* Default AnyMap(map_type) constructor

to UNORDERED_MAP_CASINSENSITIVE_KEYS

Co-authored-by: carneyweb <mike@carneyweb.com>

* Remove CoreBundleContext.dataStorage clear (#845) (#894)

Fixes #733

Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com>

* Removing std::move use with const object [ci skip] (#848) (#895)

* Removing std::move use with const [ci skip]



* Addressing PR feedback, removing const from complex types and adding
std
move back [ci skip]



---------

Signed-off-by: Tahar Touati <touati.thr@gmail.com>
Co-authored-by: thrtouati <124062546+thrtouati@users.noreply.github.com>

* Fix warning "Use of BITWISE AND to check if a flag is set" (#849) (#896)

Signed-off-by: Tahar Touati <touati.thr@gmail.com>
Co-authored-by: Tahar Touati <124062546+thrtouati@users.noreply.github.com>

* include cstdint in FileSystem.cpp (#850) (#897)

vcpkg installation is failing, with this error: 

PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:122:3: error: ‘uint32_t’ was not declared in this scope

PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:71:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?

Sure enough, when patched with this it will build and install correctly with vcpkg. Other errors are reported but this is the culprit.

Co-authored-by: Tristan Ayala <ayalat1@unlv.nevada.edu>

* Fixes #840: removes manual reference counting (#841) (#898)

* converted registration

* compiled, not passeD

* fixed weak_ptr error, now leaking mock objects

* fixed bug, need to decrement ref count

* updats from last week, test cases failing because of out of date expectations

* all tests are passing with shared and weak pointers to serviceRegistrationBasePrivate

* still passing tests, updated comments and cleaned up

* updating to share dependents

* new issue with dying service

* added coreInfo, maybe passing

* passing tests, removed manual ref counting from referenceBasePrivate, repeated all fast tests to ensure no sporadic failures

* updated comments

* updates before PR

* Removed manual reference counting

The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate.



* Removed manual reference counting and merged with upstream (#840)

The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate.



* ServiceRegistrationCoreInfo now default destructor

* Updated based on Patty's comments #840

* updated ServiceReferenceBase Constructors for clarity with shared_ptrs

* removed 'move' from serviceRegistry

* attempt at solving mac issue

* updates for lock type and removing unneccessary functions from reference

* lost lock

* changed to custom atomic load

* LockSet addition

* threading support in LockSet

* LockSet not threaded

* no names in func dec

* Incoorporated Jeff's Comments

* Assignment operator didn't fail on my computer, did in github

* updated for Jeff's 5/16 comments

* clang update

* mikes comments and fixes for multithreaded support

* remove ifdefs from BundleRegistry, abide by rule of (0,3,5), and add comments

---------



adaptations for C++14:
* move initialization statements out of if clauses

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>
Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* [ci skip] Updated README to reflect correct compiler/OS versions (#862) (#899)

[ci skip]

Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com>

* 701 - Fixes #852: adds a [[nodiscard]] to BundleContext::RegisterService (#863) (#900)

* Fixes #852: adds a [[nodiscard]] to BundleContext::RegisterService (#863)

* noDiscard update first push

* Jeff's comments, c++14 in cmakelists for makefile test, comments to reference nodiscard

---

Adaptation for C++14:
* use [[nodiscard]] only when __has_cpp_attribute is available and
__has_cpp_attribute(nodiscard) is valid. Alternatively use
[[gnu::warn_unused_result]] if nodiscard is not available, but
gnu::warn_unused_result is.
* revert default C++ standard in doc/src/CMakeLists.txt back to C++14

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>

* use nodiscard only if compiled in C++17 mode

---------

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>
Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Fix code scanning alerts (#861) (#903)

Fixes #860, #859, #858, #857, #856, #855, #853

-----
C++14 adaptations: use ABSL_FALLTHROUGH_INTENDED instead of
[[fallthrough]]

Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com>
Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com>

* Ensure multiple listeners for the same factory PID are honoured by `ConfigurationNotifier::AnyListenersForPid` (#865) (#904)

* Ensure multiple listeners for the same PID are honoured



* Fix formatting



---------

Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>
Co-authored-by: Conor Burgess <Burgess.Conor@gmail.com>
Co-authored-by: cburgess <cburgess@mathworks.com>

* Code scanning alert fix: Use of a moved from object #864 (#866) (#905)

Fixes #864 

* tests passing on linux, all files updated

* Mike and Toby backat it again

* changed second instance of warning?

* reverted naming, final submit

Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Fix race condition when concurrently adding to SCRExtensionRegistry (#870) (#906)

* Fix race condition when concurrently adding to SCRExtensionRegistry

Fixed a race that can happen when multiple threads are trying to add to the extension registry container.

Fixed a bug with the tests for SCRExtensionRegsitry class never being compiled and run.



Adaptations for C++14:
* fixed call of deleted move-constructor in TestSCRExtensionRegistry.cpp

Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com>
Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com>

* Fix #868: Recoups some of performance losses from PR #841 (#869) (#907)

* fixed lockReg shared_ptr

* down to 5% increase from original

* get logs from github to verify behavior

* reverting performance yml and adding move constructor (default) for RegistrationLocks
:

Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* #Issue873: Redundant calls to .Load() (#874) (#908)

* first commit

* test Case

* revert test

* test fix

* naming

Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Fixes #718 (#876) (#909)

Signed-off-by: Toby Cormack <tcormack@mathworks.com>
Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Fix #489 - Char Const* property (#877) (#910)

* Added case for char const*



* formatting

---------

Signed-off-by: tcormack <tcormack@mathworks.com>
Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Fix #879 Change TPP extensions (#880) (#911)

Signed-off-by: tcormack <tcormack@mathworks.com>
Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Update performance_windows.yml

Removing  c++14-compliant branch from performance workflow.
This keeps the graph clean

* Fix #881 (#912)

Reformat `.hpp` files with Clang

Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Fix #846 (#878) (#919)

* firstCommit

* events is all wait for false flags

* removed txt files



* serviceTracker tsan fixes



* deleted txt



* tsanSupppressions updated for various tests



* removed text files



* removed test

* added comment



* updated suppresssions file with commentss

* add sleep to stop spin

* add unused flag to lock



* revert reformat

* formatting

* formatting

* reformat

* updating comments

* update comment

---------

Signed-off-by: tcormack <tcormack@mathworks.com>
Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Fix #710 ServiceTracker TSAN warnings (#883) (#923)

* fixed tracker race

* fixing tsanSupp

* fixing tsan mistakes

* fixed tracker race

* tsan_suppresssions mistype

* fixed comments

* typos

Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Fix #872 (#875) Remove Statics in MultipleListenersTest.cpp and ServiceHooksTest.cpp (#924)

Signed-off-by: tcormack <tcormack@mathworks.com>
Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Nested ldap queries (#811) (#925)

* disable support for nested filtering

set -DSUPPORT_NESTED_LOOKUP to re-enable the algorithm.

* Added comment describing enabling nested ldap queries.

---------



---------

Addpations for C++14:
* replaced std::nullopt with absl::nullopt

Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com>
Co-authored-by: carneyweb <mike@carneyweb.com>

* 701 - update 3rd party components (Abseil, googletest, spdlog, nowide) (#927)

* update absl to Abseil LTS 20230125.3

* update googletest to release 1.14.0

* update spdlog to version 1.12.0

* update boost nowide to latest commit from standalone branch

* Remove unused variable to fix compiler warning (#928)

Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com>

* Fix #920 serviceTracker segfault on concurrent `tracker.Close()` and `framework.Stop()` (#922) (#931)

Signed-off-by: tcormack <tcormack@mathworks.com>
Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Add condition on development branch (#916) (#933)

* Add condition on development branch

Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com

Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com
Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com>
Co-authored-by: aadityap <aadityap@mathworks.com>

* Fix #926 Custom CppMicroServices Boost Namespace (#929) (#934)

Signed-off-by: tcormack <tcormack@mathworks.com>
Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Fix Redundant Bundle Validation checks (#921) (#935)

Signed-off-by: Shivam Negi <snegi@mathworks.com>
Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com>

* Fix #913 ServiceTracker deadlock (#915) (#936)

Signed-off-by: tcormack <tcormack@mathworks.com>
Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Adding support for multiple cardinality for service references. (#871) (#940)

* Adding support for multiple cardinality for service references. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

* Fixing build failures on Linux/Maci platform

* Addressing feedbacks: minor code changes + modifications in unitttests. Signed-off-by: The MathWorks, Inc. <mphadnis@mathworks.com>

* Modified test point to check for compile time errors. Fixed formatting in test file. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

* Changes to automate existing ServiceComponent tests using CMake as compile-only tests. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

* Fixing clang formatting for test files. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

* Improvising compile time tests based on feedbacks. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

* Added doxygen comments to new methods in ReferenceManager Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

---------

Co-authored-by: Monika032 <monikaphadnis24@gmail.com>
Co-authored-by: mphadnis <mphadnis@mathworks.com>

* 701 - prepare 3.6.3 release (#941)

* Update versions

* Untabify CMakeLists.txt

* Update Changelog for upcoming 3.6.3 release

* Fix _ABSL_SRCS/_ABSL_HDRS (erroneously added headers to _SRCS)

* Fix #938 Boost namespace Versioning and remove absl dependency (#939) (#944)

* Revert "Fix #926 Custom CppMicroServices Boost Namespace (#929)"

This reverts commit aab89e3.

Remove commit to reset to original boost namespace

* Change Cmake Infrastructure to allow custom Boost library use and remove old commit that changed boost namespace

* abseil dependency removal

* fix double forward -- maybe, this may be slow

* references instead of copies

* cmake update

-----

C++14 adapations:
* don't remove abseil as it is used for more than just strcat

Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com>
Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Fix #937 `GetServiceReferences` ordering guarantee (#943) (#946)

Signed-off-by: tcormack <tcormack@mathworks.com>
Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* CMake Updates for Boost Versioning Fix (#945) (#950)

* cmake updates

* behavior put in cmake function

* usFunctionBoostPath update

Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Initializer list support (#942) (#952)

Added support for std::initializer_list constructurs

Updated tests to use new initializer simplifying the code.

Co-authored-by: carneyweb <mike@carneyweb.com>

* ServiceComponent build tests cmake configuration (#949) (#953)

* use cmake build type

* set to debug by default

Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>

* Update Changelog for upcoming 3.6.3 release (#954) [ci skip]

[ci skip]

---------

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>
Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>
Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>
Signed-off-by: Tahar Touati <touati.thr@gmail.com>
Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com>
Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>
Signed-off-by: Toby Cormack <tcormack@mathworks.com>
Signed-off-by: tcormack <tcormack@mathworks.com>
Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com
Signed-off-by: Shivam Negi <snegi@mathworks.com>
Co-authored-by: Ingmar Sittl <79453136+insi-eb@users.noreply.github.com>
Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com>
Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com>
Co-authored-by: alchrist <alchrist@mathworks.com>
Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com>
Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com>
Co-authored-by: Aaditya <aadityap@mathworks.com>
Co-authored-by: Brian Weed <brian_weed@yahoo.com>
Co-authored-by: pelliott-mathworks <67922241+pelliott-mathworks@users.noreply.github.com>
Co-authored-by: carneyweb <mike@carneyweb.com>
Co-authored-by: thrtouati <124062546+thrtouati@users.noreply.github.com>
Co-authored-by: Tristan Ayala <ayalat1@unlv.nevada.edu>
Co-authored-by: Conor Burgess <Burgess.Conor@gmail.com>
Co-authored-by: cburgess <cburgess@mathworks.com>
Co-authored-by: Monika032 <monikaphadnis24@gmail.com>
Co-authored-by: mphadnis <mphadnis@mathworks.com>
tcormackMW added a commit that referenced this issue Dec 8, 2023
* Default any map type (#844)

* Fixed undefined behavior in Any::operator==(value)

* Revert "Fixed undefined behavior in Any::operator==(value)"

This reverts commit 3066fe1.

* Default AnyMap(map_type) constructor

to UNORDERED_MAP_CASINSENSITIVE_KEYS

* Remove CoreBundleContext.dataStorage clear (#845)

Fixes #733

* Removing std::move use with const object [ci skip] (#848)

* Removing std::move use with const [ci skip]

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

* Addressing PR feedback, removing const from complex types and adding
std
move back [ci skip]

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

---------

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

* [ci skip] Update Changelog for #845 (#847)

* Update Chagelog for #845 [ci skip]

* Update Changelog Unreleased section [ci skip]

Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com>

---------

Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com>

* Fix warning "Use of BITWISE AND to check if a flag is set" (#849)

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

* include cstdint in FileSystem.cpp (#850)

vcpkg installation is failing, with this error: 

PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:122:3: error: ‘uint32_t’ was not declared in this scope

PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:71:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?

Sure enough, when patched with this it will build and install correctly with vcpkg. Other errors are reported but this is the culprit.

* Fixes #840: removes manual reference counting (#841)

* converted registration

* compiled, not passeD

* fixed weak_ptr error, now leaking mock objects

* fixed bug, need to decrement ref count

* updats from last week, test cases failing because of out of date expectations

* all tests are passing with shared and weak pointers to serviceRegistrationBasePrivate

* still passing tests, updated comments and cleaned up

* updating to share dependents

* new issue with dying service

* added coreInfo, maybe passing

* passing tests, removed manual ref counting from referenceBasePrivate, repeated all fast tests to ensure no sporadic failures

* updated comments

* updates before PR

* Removed manual reference counting

The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate.

Signed-off-by: Toby Cormack  <tcormack@mathworks.com>

* Removed manual reference counting and merged with upstream (#840)

The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate.

Signed-off-by: Toby Cormack  <tcormack@mathworks.com>

* ServiceRegistrationCoreInfo now default destructor

* Updated based on Patty's comments #840

* updated ServiceReferenceBase Constructors for clarity with shared_ptrs

* removed 'move' from serviceRegistry

* attempt at solving mac issue

* updates for lock type and removing unneccessary functions from reference

* lost lock

* changed to custom atomic load

* LockSet addition

* threading support in LockSet

* LockSet not threaded

* no names in func dec

* Incoorporated Jeff's Comments

* Assignment operator didn't fail on my computer, did in github

* updated for Jeff's 5/16 comments

* clang update

* mikes comments and fixes for multithreaded support

* remove ifdefs from BundleRegistry, abide by rule of (0,3,5), and add comments

---------

Signed-off-by: Toby Cormack  <tcormack@mathworks.com>

* Fixes #852: adds a [[nodiscard]] to BundleContext::RegisterService (#863)

* noDiscard update first push

* Jeff's comments, c++14 in cmakelists for makefile test, comments to reference nodiscard

* [ci skip] Updated README to reflect correct compiler/OS versions (#862)

[ci skip]

* Fix code scanning alerts (#861)

Fixes #860, #859, #858, #857, #856, #855, #853

* Ensure multiple listeners for the same factory PID are honoured by `ConfigurationNotifier::AnyListenersForPid` (#865)

* Ensure multiple listeners for the same PID are honoured

Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>

* Fix formatting

Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>

---------

Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>
Co-authored-by: cburgess <cburgess@mathworks.com>

* Code scanning alert fix: Use of a moved from object #864 (#866)

Fixes #864 

* tests passing on linux, all files updated

* Mike and Toby backat it again

* changed second instance of warning?

* reverted naming, final submit

* Fix race condition when concurrently adding to SCRExtensionRegistry (#870)

* Fix race condition when concurrently adding to SCRExtensionRegistry

Fixed a race that can happen when multiple threads are trying to add to the extension registry container.

Fixed a bug with the tests for SCRExtensionRegsitry class never being compiled and run.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Fix #868: Recoups some of performance losses from PR #841 (#869)

* fixed lockReg shared_ptr

* down to 5% increase from original

* get logs from github to verify behavior

* reverting performance yml and adding move constructor (default) for RegistrationLocks
:

* #Issue873: Redundant calls to .Load() (#874)

* first commit

* test Case

* revert test

* test fix

* naming

* Fixes #718 (#876)

Signed-off-by: Toby Cormack <tcormack@mathworks.com>

* Fix #489 - Char Const* property (#877)

* Added case for char const*

Signed-off-by: tcormack <tcormack@mathworks.com>

* formatting

---------

Signed-off-by: tcormack <tcormack@mathworks.com>

* Fix #879 Change TPP extensions (#880)

Signed-off-by: tcormack <tcormack@mathworks.com>

* Fix #881

Reformat `.hpp` files with Clang

* Fix #846 (#878)

* firstCommit

* events is all wait for false flags

* removed txt files

Signed-off-by: tcormack <tcormack@mathworks.com>

* serviceTracker tsan fixes

Signed-off-by: tcormack <tcormack@mathworks.com>

* deleted txt

Signed-off-by: tcormack <tcormack@mathworks.com>

* tsanSupppressions updated for various tests

Signed-off-by: tcormack <tcormack@mathworks.com>

* removed text files

Signed-off-by: tcormack <tcormack@mathworks.com>

* removed test

* added comment

Signed-off-by: tcormack <tcormack@mathworks.com>

* updated suppresssions file with commentss

* add sleep to stop spin

* add unused flag to lock

Signed-off-by: tcormack <tcormack@mathworks.com>

* revert reformat

* formatting

* formatting

* reformat

* updating comments

* update comment

---------

Signed-off-by: tcormack <tcormack@mathworks.com>

* Fix #710 ServiceTracker TSAN warnings (#883)

* fixed tracker race

* fixing tsanSupp

* fixing tsan mistakes

* fixed tracker race

* tsan_suppresssions mistype

* fixed comments

* typos

* Fix #872 (#875) Remove Statics in MultipleListenersTest.cpp and ServiceHooksTest.cpp

Signed-off-by: tcormack <tcormack@mathworks.com>

* Remove unwanted branches from workflow (#902)

Co-authored-by: aadityap <aadityap@mathworks.com>

* Fix #920 serviceTracker segfault on concurrent `tracker.Close()` and `framework.Stop()` (#922)

Signed-off-by: tcormack <tcormack@mathworks.com>

* Add condition on development branch (#916)

* Add condition on development branch

Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com
Co-authored-by: aadityap <aadityap@mathworks.com>

* Fix #926 Custom CppMicroServices Boost Namespace (#929)

Signed-off-by: tcormack <tcormack@mathworks.com>

* Update 3rd party dependencies to versions from c++14-compliant branch (#930)

* update googletest to release 1.14.0

* update spdlog to version 1.12.0

* update boost nowide to latest commit from standalone branch

* update absl to Abseil LTS 20230125.3

* Updated amalgamated jsoncpp to 1.9.5

This also fixes compiler warnings

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>

* Upgrade miniz to 3.0.2 release

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>

---------

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>

* Fix issues with gcc-12 and clang-16 (#932)

* Remove unused variable to fix clang-16 warning
* Addd missing include when using libstdc++ headers from gcc-12

Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com>

* Fix Redundant Bundle Validation checks (#921)

Signed-off-by: Shivam Negi <snegi@mathworks.com>

* Fix #913 ServiceTracker deadlock (#915)

Signed-off-by: tcormack <tcormack@mathworks.com>

* Adding support for multiple cardinality for service references. (#871)

* Adding support for multiple cardinality for service references. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

* Fixing build failures on Linux/Maci platform

* Addressing feedbacks: minor code changes + modifications in unitttests. Signed-off-by: The MathWorks, Inc. <mphadnis@mathworks.com>

* Modified test point to check for compile time errors. Fixed formatting in test file. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

* Changes to automate existing ServiceComponent tests using CMake as compile-only tests. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

* Fixing clang formatting for test files. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

* Improvising compile time tests based on feedbacks. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

* Added doxygen comments to new methods in ReferenceManager Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

---------

Co-authored-by: mphadnis <mphadnis@mathworks.com>

* Fix #938 Boost namespace Versioning and remove absl dependency (#939)

* Revert "Fix #926 Custom CppMicroServices Boost Namespace (#929)"

This reverts commit aab89e3.

Remove commit to reset to original boost namespace

* Change Cmake Infrastructure to allow custom Boost library use and remove old commit that changed boost namespace

* abseil dependency removal

* fix double forward -- maybe, this may be slow

* references instead of copies

* cmake update

* Fix #937 `GetServiceReferences` ordering guarantee (#943)

Signed-off-by: tcormack <tcormack@mathworks.com>

* BundleTracker Implementation (#726)

* Bundle tracker (#709)

* BundleTracker stubs

* Generalize BundleAbstractTracked

* Implement BundleTracker

* Implement BundleTracker in DeclarativeServices using raw pointers

* Use std::optional in BundleTracker API

* BundleTracker template instantiations

* Create initial tests

* Move BundleTrackerTest.cpp

* Update BundleTrackerTest.cpp

* Implement TestGetTrackingCountClosed

* Implement GetTrackingCount tests

* Modify tests relating to unknown expected behavior

* Implement TestGetTracked and TestOpenOpened

* Update build_and_test_windows.yml

* Implement and update tests

* Update tests

* Use shared ptr for BundleTrackerCustomizer

* Implement and update tests

* Implement and update tests

* Rename method test file and fixture

* Update method tests

* Add TODOs

* Add branch to ci

* Update CXX_STANDARD to 17 for doc

* various fixes

* Update CMakeLIsts

* Create BundleTrackerCustomCallbackTest.cpp

* Implement and update custom callback tests

* Update build_and_test_nix.yml

* Update custom callback tests

* Implement test subset

* Resolve cross-platform build issues

* Implement and update tests

* Implement and update tests

* Further CI fixes

* Update method tests

* Update method tests to handle build shared libraries off

* Update custom callback tests to handle build shared libraries off

* Implement CreateStateMask variadic

* Implement and update method tests

* Implement test

* Update tests to use state mask creator

* Implement custom callback tests

* Create concurrency tests

* Use std::optional for GetObject

* Update custom callback tests

* Ignore bundleEvents without state changes

* Use std::optional for GetCustomizedObject

* Update GetObject test

* Do not imply implicit cast from std::optional

* Update custom callback tests

* Add lock checkout for Remove()

* Update method tests

* Update tests

* Hide _CreateStateMask

* Remove DS integration

* Snap changes

* Implement concurrency tests

* Amend CreateStateMask

* Update CreateStateMask calls

* Change .yml files

* Update formatting

* Update tests

* Move listener removal inside syncronised region

* Add BundleTracker to workflow

* Additional standardization

* Drop workflows changes

* Implement performance tests

* Update tests with unclear expectations

- Adds comments explaining the EXPECT_CALL statements expecting any number of RemovedBundle callbacks
- Updates where the expected behavior of "Close() calling RemovedBundle on tracked bundles" is tested, also adding a comment to make this fact clear

* Add newline at end of file

* Review updates

* Change API types

* Avoid frivolous using statements in BundleTracker

* Remove BundleTracker tpp file

* Add forward declarations

* Clear cross-platform build warnings

* Bundle-Tracker OSGi TrackingCount behavior

* Remove implementation tpp files

* Adjust TrackingCount() based on 702

Co-authored-by: shane-riley (The Mathworks Inc.) <sriley@mathworks.com>
Co-authored-by: xru192 <ryanxu123@gmail.com>
Co-authored-by: xru192 <56376151+xru192@users.noreply.github.com>
Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com>

* Upgrade jsoncpp (#773)

Fixes #772 

Upgrade version of jsoncpp to 1.9.5 to include fix for deprecated sprintf usage.

Upgrading introduced a new unneeded-internal-declaration warning which is set as a warning instead of error.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com>

* Fixed sporadic race conditions during framework shutdown (#725)

Fixed a number of races that can occur while one thread is performing various framework operations and another thread is shutting down the framework.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Co-authored-by: Jeff <DiClemente>

* Fix race that results in a missed config updated event (#727)

* Fix race that results in a missed config updated event

Fixed races that can cause a ManagedService or ManagedServiceFactory to miss being called when a configuraiton object is updated.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Update ComponentInstanceImpl.hpp (#724)

* Update ComponentInstanceImpl.hpp

Improve error message that is generated when an appropriate constructor isn't found for the Service Instance. 

Signed-off-by, The MathWorks, Inc. <pelliott@mathworks.com>

* Factory Configuration Bug Fix (#731)

* Factory Configuration Bug Fix

When factory configurations are created before the bundle containing the factory component is installed and started, DS should find those configurations in the Configuration Admin repository and register them as part of the factory component startup. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Factory Configuration Bug fix

Addressed code review feedback. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Update ComponentConfigurationImpl.cpp

Fixed compilation failure in Ubuntu Minimum Gcc build. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Update TestFactoryPid.cpp

Change auto const to constexpr. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Revert PR #713 (#744)

This change is causing an untenable amount of noise in log output. Backing out for now. A better solution to the problem of logging service dependency errors is needed.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Update version numbers for cppms upgrade (#748)

Update version numbers for cppms upgrade to version 3.7.4. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Fix deadlock in ConfigurationAdminImpl::RemoveConfigurations (#745)

* Fix deadlock in ConfigurationAdminImpl::RemoveConfigurations

This is a fix for a deadlock bug caused by the WaitForAllAsync in ConfigurationAdmin::RemoveConfigurations.
The Use Case is as follows:
     A configuration object is defined in the manifest.json file.
      The User's main thread stopped the bundle which causes
         the ConfigurationAdminImp::RemoveConfigurations
         method to remove the configuration object from the
         ConfigurationAdmin repository and to send an Updated
         notification to the service instance.
         RemoveConfigurations would then execute a
         WaitForAllAsync to wait for all asynchronous threads to
         complete including the asynchronous thread that was
         launched as part of the Updated  notification.
      The user's Updated method also tried to stop the bundle.
      This means that it had to wait for the
      RemoveConfigurations method to complete.
      Each thread was waiting for the other to complete.
This fix removes the WaitForAllAsync and adds a test case to confirm the deadlock is gone. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Fix compiler error

Fix compiler error in Minimum Gcc build. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Change ConfigAdminTests.testManagedServiceRemoveConfigurationsDeadlock

Change ConfigAdminTests.testManagedServiceRemoveConfigurationsDeadlock so that it more closely matches the use case that caused the deadlock. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Update TestConfigAdmin.cpp

testManagedServiceRemoveConfigurationsDeadlock test. Changed Updated method to make sure that it only stops the bundle containing the cm.testdeadlock configuration object. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Update TestConfigAdmin.cpp

Added error checking for the Updated method used in testManagedServiceRemoveConfigurationsDeadlock. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* configurations using the same pid are not updated properly (#754)

* configurations using the same pid are not updated properly

Fixed an issue whereby re-using a configuration pid did not cause the configuration to be sent to the ManagedService/ManagedServiceFactory correctly.

* Remove last change count instead of setting it to zero

Co-authored-by: jdicleme <jdicleme@mathworks.com>

* Ensure ~SCRBundleExtension does not throw (#761)

* Ensure ~SCRBundleExtension does not throw

It's possible for the bundle to be stopped before ~SCRBundleExtension accesses the bundle, causing an exception to be thrown and an abort. This change ensures the destructor does not throw.

* Fix valgrind errors

Moved cleanup of SCRBundleExtension members to make sure these objects are destroyed when an exception is thrown from DisableAndRemoveAllComponentManagers.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Fix valgrind error

Missed another error path where cleanup is necessary

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Co-authored-by: jdicleme <jdicleme@mathworks.com>

* clang-format ran for all files (#759)

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>

* Rev DS and ConfigAdmin versions for release (#762)

prepare ds and configadmin for a bug fix release

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Co-authored-by: jdicleme <jdicleme@mathworks.com>

* Clang-format git hook pre-commit enforcement (#760)

* Added clang-format git pre-commit hook

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>

* Updated README

* Updated help instructions to include '--style=file'

* Added '--style=file' flag in actual pre-commit hook check

* Updated README

* Removed unnecessary code in pre-commit hook

* Updated README

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>

* Update changelog [ci skip] (#765)

* Update Changelog to include missing changes [ci skip]

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* rebase onto development.

* Fix broken static build configurations on macOS (#774)

* Fix broken static build configurations on macOS

Fixes #738

Removed the ability to append ZIP files to the end of archives files for all supported OS platforms. Specifically the clang linker no longer tolerates linking archive files with arbitrary data appended to the end.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Fix examples tests

the tutorial example has tests which use an installed CppMicroServices SDK to test whether the example code can be compiled using the SDK. In this case, the CppMicroServices target property doesn't have the path to the metadata zip set.

To resolve this issue:
1. install the metadata zip files alongside the static libraries for all CppMicroServices components only if building static libraries.
2. Set this property for cases where the CppMicroServices SDK is used by downstream clients.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Co-authored-by: Jeff <DiClemente>

* Support arm64 on macOS (#778)

Fixes #674 

Add support for arm64 on macOS

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Performance improvement from `brian-performance` branch (#728)

* Prototype performance improvements

* Reverted AnyMap hash change

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>

* Fixed unused variable warnings

* Made changes requested by reviewers

* Made changes requested by reviewer

* Back out a performance improvement

Backing out a performance improvement as it creates a deadlock caused by mutex order locking.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>
Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Co-authored-by: BrianWeed <brian_weed@yahoo.com>
Co-authored-by: jdicleme <jeffdiclemente@users.noreply.github.com>
Co-authored-by: Jeff <DiClemente>

* Fix ub in any (#777)

* Fixed undefined behavior in Any::operator==(value)

* Revert "Fixed undefined behavior in Any::operator==(value)"

This reverts commit 3066fe1.

* Fixed undefined behavior in Any::operator==(value)

* removed unnecessary forward declaration.

* Fixed undefined behavior in Any::operator==(value)

* removed unnecessary forward declaration.

* Fix race with DS service object construction (#801)

* Fix race with DS service object construction

A race occurs when DS is constructing a service object with injectable mandatory service dependencies whereby any bound service dependencies could no longer be available because another thread unregistered any of the bound service dependencies.

Given that a ComponentContext is constructed only after all the service dependencies has been satisfied, if during ComponetContext construction any of the bound service dependencies are no nullptrs then throw and fail to construct the service object. This fixes a failure mode where a service constructor can be called with a nullptr service object when the service dependency is defined as mandatory and injection is true.

Also noticed that one of the test bundle project was exceeding the path limit on Windows, so shortened the project name to mitigate that problem.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Add more tests

Added more tests and fixed up some error messaging

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

---------

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Make a small performance improvement (#808)

stop copying the std::pair in the range-based for. This helps improve the speed of RegisterService

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Nested ldap queries (#794)

Added the capability to do ldap queries with nested keys.

Queries are first checked against the compound key and if a value is found it is returned.

If a value is not found, the key is split into segments on the "." character and then the AnyMap is "walked down" to look for a path to the value in sub-maps addressed by the segments of the key. So, if the value of the key "a.b.c" is queried,

1. Split the key into ["a","b","c"]
2. Check the top level map for a sub-map at key "a". If one is found, look in that map for a key "b" with a sub-map, and in that sub-map for a value with key "c". If found, return it.
3. If the top level map does NOT contain a key "a", look for a sub-map at key "a.b". If one is found, look in that sub-map for a value with a key of "c". If one is found, return it.
4. continue this algorithm down as many levels as there are segments until either the value for the last segment is found (in which case it is returned), or one is not found, in which case the lookup fails.

* clang-tidy improvement for CMakeResourceDependencies (#812)

CMakeResourceDependencies is often built by CMake in the context of
users of CppMicroServices - if you've configured clang-tidy to run in
the user project, it complains about the "old-style" constructor and
requests a modernized "= default".

Use --std=c++17 as minimum compile flag for explicit compilation of
this file for MacOS.

Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com>

* [ci skip] Update CHANGELOG.rst (#817)

* [ci skip] Update CHANGELOG.rst

[ci skip] Fixed 3.7.4 release notes

* Update CHANGELOG.rst

* [ci skip] Update release information for version 3.7.5 (#818)

[ci skip]
update versions and changelog

* Updated MSVC Analysis to 0.1.1 and checkout to v3 (#824)

* Nested ldap queries (#811)

* disable support for nested filtering

set -DSUPPORT_NESTED_LOOKUP to re-enable the algorithm.

* Added comment describing enabling nested ldap queries.

---------

Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com>

* Add benchmark test infrastructure to DS (#813)

* Added benchmark suite for DS

- Added benchmark test for GetService for service provided by DS

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>

* Removed unnecessary lines from CMakeLists.txt for DS benchmark tests

* Trying again

* Refactored DS test directory to mimic 'framework' test structure

* Fixed shadowed function

* Actually fix the function shadowing this time?

* Removed unnecessary bundles/link-time deps

* Updated CHANGELOG.rst

---------

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>
Co-authored-by: alchrist <alchrist@mathworks.com>

* Upgrade Build: Add Ubuntu 22.04, remove Ubuntu 18.04 (#810)

Fixes #758

* Automate Performance Testing and Deploy Results (#829)

* Create performance_windows.yml

Adding new workflow for running performance tests

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Using personal token

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Revert "Using personal token"

This reverts commit d672a80.

* Uploading results to fork

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* removing https

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Changing ph branch

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Trying to deploy on another branch

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Commit results to gh-pages branch

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Added Performance Badge

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Added target for performance badge

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Update performance_windows.yml

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Removing hardcoded paths

- Using ENV instead of hard coded build paths
- Increased threshold to 20%

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Removed Cache operation

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Removing performance branch from workflow

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Name changed to CppMicroServices Benchmarks

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

---------

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>
Co-authored-by: Aaditya <aadityap@mathworks.com>

* [ci skip] Update CHANGELOG.rst (#832)

[ci skip]
bring change log up to date with latest commits on the development branch

* Fix undefined behavior in LDAPExpr::Trim (#835)

if there is no space in the string on the second str.erase, calling
str.find_last_not_of() returns std::string::npos. Trying
to add 1 to npos leads to undefined behavior reported by UBSAN.

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>

* Brian decl services (#833)

* Performance micro-optimizations

Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com>

* Fix formatting

* More performance improvements

* fixed up compilation errors.

* deal with unused variable.

* restore API

ServiceRegistrationBase::SetProperties(ServiceProperties const&)

---------

Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com>
Co-authored-by: Michael Carney <mike@carneyweb.com>

* Update CHANGELOG.rst [ci skip] (#837)

[ci skip]
added #833

* ComponentManagermemory reallocation bug fix (#834)

* ComponentManagermemory reallocation bug fix

The ComponentManagerImpl object contained a shared_ptr to the vector of all ComponentManagerImpl objects. When adding an item to this vector, the resizing of the vector caused a memory allocation error. Fixed by removing the vector from the ComponentManagerImpl object.

* Fix for ConfigurationNotifier::CreateFactoryComponent memory allocation error

When a ComponentManager is created, it must be added to the managers map in SCRBundleExtension. This is necessary so that when the bundle is stopped, the ComponentManager can be destroyed.
The old code was holding a shared_ptr to the managers map in the ComponentManagerImpl object. This caused a memory reallocation error when a ComponentManager was added to the map and the map needed to be resized.
This fix adds an AddComponentManager method to the SCRBundleExtension object so that CreateFactoryComponent can add a manager to the managers map when it is created. In order to find the SCRBundleExtension, the map of SCRBundleExtensions was moved out of SCRActivator and into a new class called SCRExtensionRegistry.

* Rest of the ConfigurationNotifier fix

Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com>

* Fix errors in minimum gcc build

Signed-off by: The MathWorks Inc. < pelliott@mathworks.com>

* Responded to code review comments

Responded to code review comments. Added tests for SCRBundleExtension and SCRExtensionRegistry. Signed off by - The MathWorks, Inc. <pelliott@mathworks.com>

* Update ConfigurationNotifier.cpp

Update error message. Signed off by The MathWorks, Inc. <pelliott@mathworks.com>

* Update SCRExtensionRegistry.hpp

Formatting issue. signed-off by The MathWorks, Inc. <pelliott@mathworks.com>

* CreateFactoryComponent changes

ConfigurationNotifier::CreateFactoryComponent will log an exception if it can't find the SCRBundleExtension in the ExtensionRegistry instead of throwing a std::runtime_error exception. Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com>

* Update ConfigurationNotifier.cpp

Fixed call to std::exception. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Update ConfigurationNotifier.cpp

Removed throw in CreateFactoryComponent. Error message is already logged, no throw needed. Signed-off-by - The MathWorks, Inc. <pelliott@mathworks.com>

---------

Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com>

* [ci skip] Update CHANGELOG.rst (#839)

[ci skip]
Added bug fix to fix sporadic crash in DS caused by concurrent access to ComponentMgrImpl vector.  Pull Request 834.

* [ci skip] rev version (#842)

Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com>

* Default any map type (#844)

* Fixed undefined behavior in Any::operator==(value)

* Revert "Fixed undefined behavior in Any::operator==(value)"

This reverts commit 3066fe1.

* Default AnyMap(map_type) constructor

to UNORDERED_MAP_CASINSENSITIVE_KEYS

* Remove CoreBundleContext.dataStorage clear (#845)

Fixes #733

* Removing std::move use with const object [ci skip] (#848)

* Removing std::move use with const [ci skip]

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

* Addressing PR feedback, removing const from complex types and adding
std
move back [ci skip]

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

---------

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

* [ci skip] Update Changelog for #845 (#847)

* Update Chagelog for #845 [ci skip]

* Update Changelog Unreleased section [ci skip]

Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com>

---------

Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com>

* Fix warning "Use of BITWISE AND to check if a flag is set" (#849)

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

* include cstdint in FileSystem.cpp (#850)

vcpkg installation is failing, with this error: 

PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:122:3: error: ‘uint32_t’ was not declared in this scope

PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:71:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?

Sure enough, when patched with this it will build and install correctly with vcpkg. Other errors are reported but this is the culprit.

* Fixes #840: removes manual reference counting (#841)

* converted registration

* compiled, not passeD

* fixed weak_ptr error, now leaking mock objects

* fixed bug, need to decrement ref count

* updats from last week, test cases failing because of out of date expectations

* all tests are passing with shared and weak pointers to serviceRegistrationBasePrivate

* still passing tests, updated comments and cleaned up

* updating to share dependents

* new issue with dying service

* added coreInfo, maybe passing

* passing tests, removed manual ref counting from referenceBasePrivate, repeated all fast tests to ensure no sporadic failures

* updated comments

* updates before PR

* Removed manual reference counting

The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate.

Signed-off-by: Toby Cormack  <tcormack@mathworks.com>

* Removed manual reference counting and merged with upstream (#840)

The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate.

Signed-off-by: Toby Cormack  <tcormack@mathworks.com>

* ServiceRegistrationCoreInfo now default destructor

* Updated based on Patty's comments #840

* updated ServiceReferenceBase Constructors for clarity with shared_ptrs

* removed 'move' from serviceRegistry

* attempt at solving mac issue

* updates for lock type and removing unneccessary functions from reference

* lost lock

* changed to custom atomic load

* LockSet addition

* threading support in LockSet

* LockSet not threaded

* no names in func dec

* Incoorporated Jeff's Comments

* Assignment operator didn't fail on my computer, did in github

* updated for Jeff's 5/16 comments

* clang update

* mikes comments and fixes for multithreaded support

* remove ifdefs from BundleRegistry, abide by rule of (0,3,5), and add comments

---------

Signed-off-by: Toby Cormack  <tcormack@mathworks.com>

* Fixes #852: adds a [[nodiscard]] to BundleContext::RegisterService (#863)

* noDiscard update first push

* Jeff's comments, c++14 in cmakelists for makefile test, comments to reference nodiscard

* [ci skip] Updated README to reflect correct compiler/OS versions (#862)

[ci skip]

* Fix code scanning alerts (#861)

Fixes #860, #859, #858, #857, #856, #855, #853

* Ensure multiple listeners for the same factory PID are honoured by `ConfigurationNotifier::AnyListenersForPid` (#865)

* Ensure multiple listeners for the same PID are honoured

Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>

* Fix formatting

Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>

---------

Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>
Co-authored-by: cburgess <cburgess@mathworks.com>

* Code scanning alert fix: Use of a moved from object #864 (#866)

Fixes #864 

* tests passing on linux, all files updated

* Mike and Toby backat it again

* changed second instance of warning?

* reverted naming, final submit

* Fix race condition when concurrently adding to SCRExtensionRegistry (#870)

* Fix race condition when concurrently adding to SCRExtensionRegistry

Fixed a race that can happen when multiple threads are trying to add to the extension registry container.

Fixed a bug with the tests for SCRExtensionRegsitry class never being compiled and run.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Fix #868: Recoups some of performance losses from PR #841 (#869)

* fixed lockReg shared_ptr

* down to 5% increase from original

* get logs from github to verify behavior

* reverting performance yml and adding move constructor (default) for RegistrationLocks
:

* #Issue873: Redundant calls to .Load() (#874)

* first commit

* test Case

* revert test

* test fix

* naming

* Fixes #718 (#876)

Signed-off-by: Toby Cormack <tcormack@mathworks.com>

* removed an empty line addition.

* fixup some merge issues.

* respond to code review feedback

* code review feedback.

* code review feedback.

* Update TrackedService.h

Remove underscore from names.

* fixing merge

* update _var naming convention

* GetCustomizer_unlocked() addition

* remove getTrackerAsCustomizer

---------

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>
Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com>
Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>
Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>
Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com>
Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com>
Signed-off-by: Tahar Touati <touati.thr@gmail.com>
Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com>
Signed-off-by: Toby Cormack  <tcormack@mathworks.com>
Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>
Signed-off-by: Toby Cormack <tcormack@mathworks.com>
Co-authored-by: Shane Riley <52603694+shane-riley@users.noreply.github.com>
Co-authored-by: shane-riley (The Mathworks Inc.) <sriley@mathworks.com>
Co-authored-by: xru192 <ryanxu123@gmail.com>
Co-authored-by: xru192 <56376151+xru192@users.noreply.github.com>
Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com>
Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com>
Co-authored-by: pelliott-mathworks <67922241+pelliott-mathworks@users.noreply.github.com>
Co-authored-by: BrianWeed <brian_weed@yahoo.com>
Co-authored-by: carneyweb <mike@carneyweb.com>
Co-authored-by: Ingmar Sittl <79453136+insi-eb@users.noreply.github.com>
Co-authored-by: alchrist <alchrist@mathworks.com>
Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com>
Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com>
Co-authored-by: Aaditya <aadityap@mathworks.com>
Co-authored-by: thrtouati <124062546+thrtouati@users.noreply.github.com>
Co-authored-by: Tristan Ayala <ayalat1@unlv.nevada.edu>
Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>
Co-authored-by: Conor Burgess <Burgess.Conor@gmail.com>
Co-authored-by: cburgess <cburgess@mathworks.com>
Co-authored-by: tcormack <tcormack@mathworks.com>

* CMake Updates for Boost Versioning Fix (#945)

* cmake updates

* behavior put in cmake function

* usFunctionBoostPath update

* Initializer list support (#942)

* get latest on development

* Added support for std::initializer_list constructurs

Updated tests to use new initializer simplifying the code.

* new clone.

* fixed up some test code to make it compile on older compilers.

* fixup.

* updated some tests to check operator=

* check.

* fixed typo in comment.

* added specific tests for initializer list support.

* Revert "get latest on development"

This reverts commit 639f61d.

* test.

* Revert "test."

This reverts commit dd56818.

* Revert "Revert "get latest on development""

This reverts commit 7ef9657.

* Revert "Revert "Revert "get latest on development"""

This reverts commit 6f4d982.

* restore.

* update google test to submodule version on development

* update nowide version to match development

* fixed up some comments.

* ServiceComponent build tests cmake configuration (#949)

* use cmake build type

* set to debug by default

* Fix #961 -- hashable references after destruction of RegistrationBase object (#962)

* update hash function

* test case working

* update version

---------

Signed-off-by: Tahar Touati <touati.thr@gmail.com>
Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com>
Signed-off-by: Toby Cormack  <tcormack@mathworks.com>
Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>
Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Signed-off-by: Toby Cormack <tcormack@mathworks.com>
Signed-off-by: tcormack <tcormack@mathworks.com>
Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com
Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>
Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com>
Signed-off-by: Shivam Negi <snegi@mathworks.com>
Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>
Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>
Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com>
Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com>
Co-authored-by: carneyweb <mike@carneyweb.com>
Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com>
Co-authored-by: thrtouati <124062546+thrtouati@users.noreply.github.com>
Co-authored-by: Tristan Ayala <ayalat1@unlv.nevada.edu>
Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com>
Co-authored-by: Conor Burgess <Burgess.Conor@gmail.com>
Co-authored-by: cburgess <cburgess@mathworks.com>
Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com>
Co-authored-by: aadityap <aadityap@mathworks.com>
Co-authored-by: Ingmar Sittl <79453136+insi-eb@users.noreply.github.com>
Co-authored-by: Monika032 <monikaphadnis24@gmail.com>
Co-authored-by: mphadnis <mphadnis@mathworks.com>
Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com>
Co-authored-by: Shane Riley <52603694+shane-riley@users.noreply.github.com>
Co-authored-by: shane-riley (The Mathworks Inc.) <sriley@mathworks.com>
Co-authored-by: xru192 <ryanxu123@gmail.com>
Co-authored-by: xru192 <56376151+xru192@users.noreply.github.com>
Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com>
Co-authored-by: pelliott-mathworks <67922241+pelliott-mathworks@users.noreply.github.com>
Co-authored-by: BrianWeed <brian_weed@yahoo.com>
Co-authored-by: alchrist <alchrist@mathworks.com>
tcormackMW added a commit that referenced this issue Apr 12, 2024
* Update CHANGELOG.rst

For version 3.7.4 release

* Update CHANGELOG.rst

* Update CHANGELOG.rst

* Update CHANGELOG.rst

Fixed 3.7.4 release notes

* Update CHANGELOG.rst

* Performance improvement from `brian-performance` branch (#728)

* Prototype performance improvements

* Reverted AnyMap hash change

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>

* Fixed unused variable warnings

* Made changes requested by reviewers

* Made changes requested by reviewer

* Back out a performance improvement

Backing out a performance improvement as it creates a deadlock caused by mutex order locking.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>
Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Co-authored-by: BrianWeed <brian_weed@yahoo.com>
Co-authored-by: jdicleme <jeffdiclemente@users.noreply.github.com>
Co-authored-by: Jeff <DiClemente>

* Fix ub in any (#777)

* Fixed undefined behavior in Any::operator==(value)

* Revert "Fixed undefined behavior in Any::operator==(value)"

This reverts commit 3066fe1128da0aad1215e811be7ddf211b56be77.

* Fixed undefined behavior in Any::operator==(value)

* removed unnecessary forward declaration.

* Fixed undefined behavior in Any::operator==(value)

* removed unnecessary forward declaration.

* Fix race with DS service object construction (#801)

* Fix race with DS service object construction

A race occurs when DS is constructing a service object with injectable mandatory service dependencies whereby any bound service dependencies could no longer be available because another thread unregistered any of the bound service dependencies.

Given that a ComponentContext is constructed only after all the service dependencies has been satisfied, if during ComponetContext construction any of the bound service dependencies are no nullptrs then throw and fail to construct the service object. This fixes a failure mode where a service constructor can be called with a nullptr service object when the service dependency is defined as mandatory and injection is true.

Also noticed that one of the test bundle project was exceeding the path limit on Windows, so shortened the project name to mitigate that problem.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Add more tests

Added more tests and fixed up some error messaging

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

---------

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Make a small performance improvement (#808)

stop copying the std::pair in the range-based for. This helps improve the speed of RegisterService

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* [ci skip] Update release information for version 3.7.5 (#818)

[ci skip]
update versions and changelog

* update version

* [ci-skip] Merge branch 'Release-3.8' (#974)

* Default any map type (#844)

* Fixed undefined behavior in Any::operator==(value)

* Revert "Fixed undefined behavior in Any::operator==(value)"

This reverts commit 3066fe1128da0aad1215e811be7ddf211b56be77.

* Default AnyMap(map_type) constructor

to UNORDERED_MAP_CASINSENSITIVE_KEYS

* Remove CoreBundleContext.dataStorage clear (#845)

Fixes #733

* Removing std::move use with const object [ci skip] (#848)

* Removing std::move use with const [ci skip]

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

* Addressing PR feedback, removing const from complex types and adding
std
move back [ci skip]

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

---------

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

* [ci skip] Update Changelog for #845 (#847)

* Update Chagelog for #845 [ci skip]

* Update Changelog Unreleased section [ci skip]

Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com>

---------

Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com>

* Fix warning "Use of BITWISE AND to check if a flag is set" (#849)

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

* include cstdint in FileSystem.cpp (#850)

vcpkg installation is failing, with this error: 

PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:122:3: error: ‘uint32_t’ was not declared in this scope

PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:71:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?

Sure enough, when patched with this it will build and install correctly with vcpkg. Other errors are reported but this is the culprit.

* Fixes #840: removes manual reference counting (#841)

* converted registration

* compiled, not passeD

* fixed weak_ptr error, now leaking mock objects

* fixed bug, need to decrement ref count

* updats from last week, test cases failing because of out of date expectations

* all tests are passing with shared and weak pointers to serviceRegistrationBasePrivate

* still passing tests, updated comments and cleaned up

* updating to share dependents

* new issue with dying service

* added coreInfo, maybe passing

* passing tests, removed manual ref counting from referenceBasePrivate, repeated all fast tests to ensure no sporadic failures

* updated comments

* updates before PR

* Removed manual reference counting

The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate.

Signed-off-by: Toby Cormack  <tcormack@mathworks.com>

* Removed manual reference counting and merged with upstream (#840)

The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate.

Signed-off-by: Toby Cormack  <tcormack@mathworks.com>

* ServiceRegistrationCoreInfo now default destructor

* Updated based on Patty's comments #840

* updated ServiceReferenceBase Constructors for clarity with shared_ptrs

* removed 'move' from serviceRegistry

* attempt at solving mac issue

* updates for lock type and removing unneccessary functions from reference

* lost lock

* changed to custom atomic load

* LockSet addition

* threading support in LockSet

* LockSet not threaded

* no names in func dec

* Incoorporated Jeff's Comments

* Assignment operator didn't fail on my computer, did in github

* updated for Jeff's 5/16 comments

* clang update

* mikes comments and fixes for multithreaded support

* remove ifdefs from BundleRegistry, abide by rule of (0,3,5), and add comments

---------

Signed-off-by: Toby Cormack  <tcormack@mathworks.com>

* Fixes #852: adds a [[nodiscard]] to BundleContext::RegisterService (#863)

* noDiscard update first push

* Jeff's comments, c++14 in cmakelists for makefile test, comments to reference nodiscard

* [ci skip] Updated README to reflect correct compiler/OS versions (#862)

[ci skip]

* Fix code scanning alerts (#861)

Fixes #860, #859, #858, #857, #856, #855, #853

* Ensure multiple listeners for the same factory PID are honoured by `ConfigurationNotifier::AnyListenersForPid` (#865)

* Ensure multiple listeners for the same PID are honoured

Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>

* Fix formatting

Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>

---------

Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>
Co-authored-by: cburgess <cburgess@mathworks.com>

* Code scanning alert fix: Use of a moved from object #864 (#866)

Fixes #864 

* tests passing on linux, all files updated

* Mike and Toby backat it again

* changed second instance of warning?

* reverted naming, final submit

* Fix race condition when concurrently adding to SCRExtensionRegistry (#870)

* Fix race condition when concurrently adding to SCRExtensionRegistry

Fixed a race that can happen when multiple threads are trying to add to the extension registry container.

Fixed a bug with the tests for SCRExtensionRegsitry class never being compiled and run.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Fix #868: Recoups some of performance losses from PR #841 (#869)

* fixed lockReg shared_ptr

* down to 5% increase from original

* get logs from github to verify behavior

* reverting performance yml and adding move constructor (default) for RegistrationLocks
:

* #Issue873: Redundant calls to .Load() (#874)

* first commit

* test Case

* revert test

* test fix

* naming

* Fixes #718 (#876)

Signed-off-by: Toby Cormack <tcormack@mathworks.com>

* Fix #489 - Char Const* property (#877)

* Added case for char const*

Signed-off-by: tcormack <tcormack@mathworks.com>

* formatting

---------

Signed-off-by: tcormack <tcormack@mathworks.com>

* Fix #879 Change TPP extensions (#880)

Signed-off-by: tcormack <tcormack@mathworks.com>

* Fix #881

Reformat `.hpp` files with Clang

* Fix #846 (#878)

* firstCommit

* events is all wait for false flags

* removed txt files

Signed-off-by: tcormack <tcormack@mathworks.com>

* serviceTracker tsan fixes

Signed-off-by: tcormack <tcormack@mathworks.com>

* deleted txt

Signed-off-by: tcormack <tcormack@mathworks.com>

* tsanSupppressions updated for various tests

Signed-off-by: tcormack <tcormack@mathworks.com>

* removed text files

Signed-off-by: tcormack <tcormack@mathworks.com>

* removed test

* added comment

Signed-off-by: tcormack <tcormack@mathworks.com>

* updated suppresssions file with commentss

* add sleep to stop spin

* add unused flag to lock

Signed-off-by: tcormack <tcormack@mathworks.com>

* revert reformat

* formatting

* formatting

* reformat

* updating comments

* update comment

---------

Signed-off-by: tcormack <tcormack@mathworks.com>

* Fix #710 ServiceTracker TSAN warnings (#883)

* fixed tracker race

* fixing tsanSupp

* fixing tsan mistakes

* fixed tracker race

* tsan_suppresssions mistype

* fixed comments

* typos

* Fix #872 (#875) Remove Statics in MultipleListenersTest.cpp and ServiceHooksTest.cpp

Signed-off-by: tcormack <tcormack@mathworks.com>

* Remove unwanted branches from workflow (#902)

Co-authored-by: aadityap <aadityap@mathworks.com>

* Fix #920 serviceTracker segfault on concurrent `tracker.Close()` and `framework.Stop()` (#922)

Signed-off-by: tcormack <tcormack@mathworks.com>

* Add condition on development branch (#916)

* Add condition on development branch

Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com
Co-authored-by: aadityap <aadityap@mathworks.com>

* Fix #926 Custom CppMicroServices Boost Namespace (#929)

Signed-off-by: tcormack <tcormack@mathworks.com>

* Update 3rd party dependencies to versions from c++14-compliant branch (#930)

* update googletest to release 1.14.0

* update spdlog to version 1.12.0

* update boost nowide to latest commit from standalone branch

* update absl to Abseil LTS 20230125.3

* Updated amalgamated jsoncpp to 1.9.5

This also fixes compiler warnings

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>

* Upgrade miniz to 3.0.2 release

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>

---------

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>

* Fix issues with gcc-12 and clang-16 (#932)

* Remove unused variable to fix clang-16 warning
* Addd missing include when using libstdc++ headers from gcc-12

Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com>

* Fix Redundant Bundle Validation checks (#921)

Signed-off-by: Shivam Negi <snegi@mathworks.com>

* Fix #913 ServiceTracker deadlock (#915)

Signed-off-by: tcormack <tcormack@mathworks.com>

* Adding support for multiple cardinality for service references. (#871)

* Adding support for multiple cardinality for service references. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

* Fixing build failures on Linux/Maci platform

* Addressing feedbacks: minor code changes + modifications in unitttests. Signed-off-by: The MathWorks, Inc. <mphadnis@mathworks.com>

* Modified test point to check for compile time errors. Fixed formatting in test file. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

* Changes to automate existing ServiceComponent tests using CMake as compile-only tests. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

* Fixing clang formatting for test files. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

* Improvising compile time tests based on feedbacks. Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

* Added doxygen comments to new methods in ReferenceManager Signed-off-by: The MathWorks, Inc. mphadnis@mathworks.com

---------

Co-authored-by: mphadnis <mphadnis@mathworks.com>

* Fix #938 Boost namespace Versioning and remove absl dependency (#939)

* Revert "Fix #926 Custom CppMicroServices Boost Namespace (#929)"

This reverts commit aab89e36401b6ec84e121597a517dfb5c2e2263e.

Remove commit to reset to original boost namespace

* Change Cmake Infrastructure to allow custom Boost library use and remove old commit that changed boost namespace

* abseil dependency removal

* fix double forward -- maybe, this may be slow

* references instead of copies

* cmake update

* Fix #937 `GetServiceReferences` ordering guarantee (#943)

Signed-off-by: tcormack <tcormack@mathworks.com>

* BundleTracker Implementation (#726)

* Bundle tracker (#709)

* BundleTracker stubs

* Generalize BundleAbstractTracked

* Implement BundleTracker

* Implement BundleTracker in DeclarativeServices using raw pointers

* Use std::optional in BundleTracker API

* BundleTracker template instantiations

* Create initial tests

* Move BundleTrackerTest.cpp

* Update BundleTrackerTest.cpp

* Implement TestGetTrackingCountClosed

* Implement GetTrackingCount tests

* Modify tests relating to unknown expected behavior

* Implement TestGetTracked and TestOpenOpened

* Update build_and_test_windows.yml

* Implement and update tests

* Update tests

* Use shared ptr for BundleTrackerCustomizer

* Implement and update tests

* Implement and update tests

* Rename method test file and fixture

* Update method tests

* Add TODOs

* Add branch to ci

* Update CXX_STANDARD to 17 for doc

* various fixes

* Update CMakeLIsts

* Create BundleTrackerCustomCallbackTest.cpp

* Implement and update custom callback tests

* Update build_and_test_nix.yml

* Update custom callback tests

* Implement test subset

* Resolve cross-platform build issues

* Implement and update tests

* Implement and update tests

* Further CI fixes

* Update method tests

* Update method tests to handle build shared libraries off

* Update custom callback tests to handle build shared libraries off

* Implement CreateStateMask variadic

* Implement and update method tests

* Implement test

* Update tests to use state mask creator

* Implement custom callback tests

* Create concurrency tests

* Use std::optional for GetObject

* Update custom callback tests

* Ignore bundleEvents without state changes

* Use std::optional for GetCustomizedObject

* Update GetObject test

* Do not imply implicit cast from std::optional

* Update custom callback tests

* Add lock checkout for Remove()

* Update method tests

* Update tests

* Hide _CreateStateMask

* Remove DS integration

* Snap changes

* Implement concurrency tests

* Amend CreateStateMask

* Update CreateStateMask calls

* Change .yml files

* Update formatting

* Update tests

* Move listener removal inside syncronised region

* Add BundleTracker to workflow

* Additional standardization

* Drop workflows changes

* Implement performance tests

* Update tests with unclear expectations

- Adds comments explaining the EXPECT_CALL statements expecting any number of RemovedBundle callbacks
- Updates where the expected behavior of "Close() calling RemovedBundle on tracked bundles" is tested, also adding a comment to make this fact clear

* Add newline at end of file

* Review updates

* Change API types

* Avoid frivolous using statements in BundleTracker

* Remove BundleTracker tpp file

* Add forward declarations

* Clear cross-platform build warnings

* Bundle-Tracker OSGi TrackingCount behavior

* Remove implementation tpp files

* Adjust TrackingCount() based on 702

Co-authored-by: shane-riley (The Mathworks Inc.) <sriley@mathworks.com>
Co-authored-by: xru192 <ryanxu123@gmail.com>
Co-authored-by: xru192 <56376151+xru192@users.noreply.github.com>
Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com>

* Upgrade jsoncpp (#773)

Fixes #772 

Upgrade version of jsoncpp to 1.9.5 to include fix for deprecated sprintf usage.

Upgrading introduced a new unneeded-internal-declaration warning which is set as a warning instead of error.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com>

* Fixed sporadic race conditions during framework shutdown (#725)

Fixed a number of races that can occur while one thread is performing various framework operations and another thread is shutting down the framework.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Co-authored-by: Jeff <DiClemente>

* Fix race that results in a missed config updated event (#727)

* Fix race that results in a missed config updated event

Fixed races that can cause a ManagedService or ManagedServiceFactory to miss being called when a configuraiton object is updated.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Update ComponentInstanceImpl.hpp (#724)

* Update ComponentInstanceImpl.hpp

Improve error message that is generated when an appropriate constructor isn't found for the Service Instance. 

Signed-off-by, The MathWorks, Inc. <pelliott@mathworks.com>

* Factory Configuration Bug Fix (#731)

* Factory Configuration Bug Fix

When factory configurations are created before the bundle containing the factory component is installed and started, DS should find those configurations in the Configuration Admin repository and register them as part of the factory component startup. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Factory Configuration Bug fix

Addressed code review feedback. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Update ComponentConfigurationImpl.cpp

Fixed compilation failure in Ubuntu Minimum Gcc build. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Update TestFactoryPid.cpp

Change auto const to constexpr. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Revert PR #713 (#744)

This change is causing an untenable amount of noise in log output. Backing out for now. A better solution to the problem of logging service dependency errors is needed.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Update version numbers for cppms upgrade (#748)

Update version numbers for cppms upgrade to version 3.7.4. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Fix deadlock in ConfigurationAdminImpl::RemoveConfigurations (#745)

* Fix deadlock in ConfigurationAdminImpl::RemoveConfigurations

This is a fix for a deadlock bug caused by the WaitForAllAsync in ConfigurationAdmin::RemoveConfigurations.
The Use Case is as follows:
     A configuration object is defined in the manifest.json file.
      The User's main thread stopped the bundle which causes
         the ConfigurationAdminImp::RemoveConfigurations
         method to remove the configuration object from the
         ConfigurationAdmin repository and to send an Updated
         notification to the service instance.
         RemoveConfigurations would then execute a
         WaitForAllAsync to wait for all asynchronous threads to
         complete including the asynchronous thread that was
         launched as part of the Updated  notification.
      The user's Updated method also tried to stop the bundle.
      This means that it had to wait for the
      RemoveConfigurations method to complete.
      Each thread was waiting for the other to complete.
This fix removes the WaitForAllAsync and adds a test case to confirm the deadlock is gone. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Fix compiler error

Fix compiler error in Minimum Gcc build. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Change ConfigAdminTests.testManagedServiceRemoveConfigurationsDeadlock

Change ConfigAdminTests.testManagedServiceRemoveConfigurationsDeadlock so that it more closely matches the use case that caused the deadlock. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Update TestConfigAdmin.cpp

testManagedServiceRemoveConfigurationsDeadlock test. Changed Updated method to make sure that it only stops the bundle containing the cm.testdeadlock configuration object. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Update TestConfigAdmin.cpp

Added error checking for the Updated method used in testManagedServiceRemoveConfigurationsDeadlock. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* configurations using the same pid are not updated properly (#754)

* configurations using the same pid are not updated properly

Fixed an issue whereby re-using a configuration pid did not cause the configuration to be sent to the ManagedService/ManagedServiceFactory correctly.

* Remove last change count instead of setting it to zero

Co-authored-by: jdicleme <jdicleme@mathworks.com>

* Ensure ~SCRBundleExtension does not throw (#761)

* Ensure ~SCRBundleExtension does not throw

It's possible for the bundle to be stopped before ~SCRBundleExtension accesses the bundle, causing an exception to be thrown and an abort. This change ensures the destructor does not throw.

* Fix valgrind errors

Moved cleanup of SCRBundleExtension members to make sure these objects are destroyed when an exception is thrown from DisableAndRemoveAllComponentManagers.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Fix valgrind error

Missed another error path where cleanup is necessary

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Co-authored-by: jdicleme <jdicleme@mathworks.com>

* clang-format ran for all files (#759)

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>

* Rev DS and ConfigAdmin versions for release (#762)

prepare ds and configadmin for a bug fix release

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Co-authored-by: jdicleme <jdicleme@mathworks.com>

* Clang-format git hook pre-commit enforcement (#760)

* Added clang-format git pre-commit hook

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>

* Updated README

* Updated help instructions to include '--style=file'

* Added '--style=file' flag in actual pre-commit hook check

* Updated README

* Removed unnecessary code in pre-commit hook

* Updated README

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>

* Update changelog [ci skip] (#765)

* Update Changelog to include missing changes [ci skip]

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* rebase onto development.

* Fix broken static build configurations on macOS (#774)

* Fix broken static build configurations on macOS

Fixes #738

Removed the ability to append ZIP files to the end of archives files for all supported OS platforms. Specifically the clang linker no longer tolerates linking archive files with arbitrary data appended to the end.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Fix examples tests

the tutorial example has tests which use an installed CppMicroServices SDK to test whether the example code can be compiled using the SDK. In this case, the CppMicroServices target property doesn't have the path to the metadata zip set.

To resolve this issue:
1. install the metadata zip files alongside the static libraries for all CppMicroServices components only if building static libraries.
2. Set this property for cases where the CppMicroServices SDK is used by downstream clients.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Co-authored-by: Jeff <DiClemente>

* Support arm64 on macOS (#778)

Fixes #674 

Add support for arm64 on macOS

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Performance improvement from `brian-performance` branch (#728)

* Prototype performance improvements

* Reverted AnyMap hash change

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>

* Fixed unused variable warnings

* Made changes requested by reviewers

* Made changes requested by reviewer

* Back out a performance improvement

Backing out a performance improvement as it creates a deadlock caused by mutex order locking.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>
Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Co-authored-by: BrianWeed <brian_weed@yahoo.com>
Co-authored-by: jdicleme <jeffdiclemente@users.noreply.github.com>
Co-authored-by: Jeff <DiClemente>

* Fix ub in any (#777)

* Fixed undefined behavior in Any::operator==(value)

* Revert "Fixed undefined behavior in Any::operator==(value)"

This reverts commit 3066fe1128da0aad1215e811be7ddf211b56be77.

* Fixed undefined behavior in Any::operator==(value)

* removed unnecessary forward declaration.

* Fixed undefined behavior in Any::operator==(value)

* removed unnecessary forward declaration.

* Fix race with DS service object construction (#801)

* Fix race with DS service object construction

A race occurs when DS is constructing a service object with injectable mandatory service dependencies whereby any bound service dependencies could no longer be available because another thread unregistered any of the bound service dependencies.

Given that a ComponentContext is constructed only after all the service dependencies has been satisfied, if during ComponetContext construction any of the bound service dependencies are no nullptrs then throw and fail to construct the service object. This fixes a failure mode where a service constructor can be called with a nullptr service object when the service dependency is defined as mandatory and injection is true.

Also noticed that one of the test bundle project was exceeding the path limit on Windows, so shortened the project name to mitigate that problem.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Add more tests

Added more tests and fixed up some error messaging

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

---------

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Make a small performance improvement (#808)

stop copying the std::pair in the range-based for. This helps improve the speed of RegisterService

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Nested ldap queries (#794)

Added the capability to do ldap queries with nested keys.

Queries are first checked against the compound key and if a value is found it is returned.

If a value is not found, the key is split into segments on the "." character and then the AnyMap is "walked down" to look for a path to the value in sub-maps addressed by the segments of the key. So, if the value of the key "a.b.c" is queried,

1. Split the key into ["a","b","c"]
2. Check the top level map for a sub-map at key "a". If one is found, look in that map for a key "b" with a sub-map, and in that sub-map for a value with key "c". If found, return it.
3. If the top level map does NOT contain a key "a", look for a sub-map at key "a.b". If one is found, look in that sub-map for a value with a key of "c". If one is found, return it.
4. continue this algorithm down as many levels as there are segments until either the value for the last segment is found (in which case it is returned), or one is not found, in which case the lookup fails.

* clang-tidy improvement for CMakeResourceDependencies (#812)

CMakeResourceDependencies is often built by CMake in the context of
users of CppMicroServices - if you've configured clang-tidy to run in
the user project, it complains about the "old-style" constructor and
requests a modernized "= default".

Use --std=c++17 as minimum compile flag for explicit compilation of
this file for MacOS.

Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com>

* [ci skip] Update CHANGELOG.rst (#817)

* [ci skip] Update CHANGELOG.rst

[ci skip] Fixed 3.7.4 release notes

* Update CHANGELOG.rst

* [ci skip] Update release information for version 3.7.5 (#818)

[ci skip]
update versions and changelog

* Updated MSVC Analysis to 0.1.1 and checkout to v3 (#824)

* Nested ldap queries (#811)

* disable support for nested filtering

set -DSUPPORT_NESTED_LOOKUP to re-enable the algorithm.

* Added comment describing enabling nested ldap queries.

---------

Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com>

* Add benchmark test infrastructure to DS (#813)

* Added benchmark suite for DS

- Added benchmark test for GetService for service provided by DS

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>

* Removed unnecessary lines from CMakeLists.txt for DS benchmark tests

* Trying again

* Refactored DS test directory to mimic 'framework' test structure

* Fixed shadowed function

* Actually fix the function shadowing this time?

* Removed unnecessary bundles/link-time deps

* Updated CHANGELOG.rst

---------

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>
Co-authored-by: alchrist <alchrist@mathworks.com>

* Upgrade Build: Add Ubuntu 22.04, remove Ubuntu 18.04 (#810)

Fixes #758

* Automate Performance Testing and Deploy Results (#829)

* Create performance_windows.yml

Adding new workflow for running performance tests

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Using personal token

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Revert "Using personal token"

This reverts commit d672a801b6d11f9b8d72a54ae1de849179523a06.

* Uploading results to fork

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* removing https

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Changing ph branch

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Trying to deploy on another branch

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Commit results to gh-pages branch

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Added Performance Badge

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Added target for performance badge

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Update performance_windows.yml

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Removing hardcoded paths

- Using ENV instead of hard coded build paths
- Increased threshold to 20%

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Removed Cache operation

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Removing performance branch from workflow

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

* Name changed to CppMicroServices Benchmarks

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>

---------

Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>
Co-authored-by: Aaditya <aadityap@mathworks.com>

* [ci skip] Update CHANGELOG.rst (#832)

[ci skip]
bring change log up to date with latest commits on the development branch

* Fix undefined behavior in LDAPExpr::Trim (#835)

if there is no space in the string on the second str.erase, calling
str.find_last_not_of() returns std::string::npos. Trying
to add 1 to npos leads to undefined behavior reported by UBSAN.

Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>

* Brian decl services (#833)

* Performance micro-optimizations

Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com>

* Fix formatting

* More performance improvements

* fixed up compilation errors.

* deal with unused variable.

* restore API

ServiceRegistrationBase::SetProperties(ServiceProperties const&)

---------

Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com>
Co-authored-by: Michael Carney <mike@carneyweb.com>

* Update CHANGELOG.rst [ci skip] (#837)

[ci skip]
added https://github.com/CppMicroServices/CppMicroServices/pull/833

* ComponentManagermemory reallocation bug fix (#834)

* ComponentManagermemory reallocation bug fix

The ComponentManagerImpl object contained a shared_ptr to the vector of all ComponentManagerImpl objects. When adding an item to this vector, the resizing of the vector caused a memory allocation error. Fixed by removing the vector from the ComponentManagerImpl object.

* Fix for ConfigurationNotifier::CreateFactoryComponent memory allocation error

When a ComponentManager is created, it must be added to the managers map in SCRBundleExtension. This is necessary so that when the bundle is stopped, the ComponentManager can be destroyed.
The old code was holding a shared_ptr to the managers map in the ComponentManagerImpl object. This caused a memory reallocation error when a ComponentManager was added to the map and the map needed to be resized.
This fix adds an AddComponentManager method to the SCRBundleExtension object so that CreateFactoryComponent can add a manager to the managers map when it is created. In order to find the SCRBundleExtension, the map of SCRBundleExtensions was moved out of SCRActivator and into a new class called SCRExtensionRegistry.

* Rest of the ConfigurationNotifier fix

Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com>

* Fix errors in minimum gcc build

Signed-off by: The MathWorks Inc. < pelliott@mathworks.com>

* Responded to code review comments

Responded to code review comments. Added tests for SCRBundleExtension and SCRExtensionRegistry. Signed off by - The MathWorks, Inc. <pelliott@mathworks.com>

* Update ConfigurationNotifier.cpp

Update error message. Signed off by The MathWorks, Inc. <pelliott@mathworks.com>

* Update SCRExtensionRegistry.hpp

Formatting issue. signed-off by The MathWorks, Inc. <pelliott@mathworks.com>

* CreateFactoryComponent changes

ConfigurationNotifier::CreateFactoryComponent will log an exception if it can't find the SCRBundleExtension in the ExtensionRegistry instead of throwing a std::runtime_error exception. Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com>

* Update ConfigurationNotifier.cpp

Fixed call to std::exception. Signed-off-by The MathWorks, Inc. <pelliott@mathworks.com>

* Update ConfigurationNotifier.cpp

Removed throw in CreateFactoryComponent. Error message is already logged, no throw needed. Signed-off-by - The MathWorks, Inc. <pelliott@mathworks.com>

---------

Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com>

* [ci skip] Update CHANGELOG.rst (#839)

[ci skip]
Added bug fix to fix sporadic crash in DS caused by concurrent access to ComponentMgrImpl vector.  Pull Request 834.

* [ci skip] rev version (#842)

Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com>

* Default any map type (#844)

* Fixed undefined behavior in Any::operator==(value)

* Revert "Fixed undefined behavior in Any::operator==(value)"

This reverts commit 3066fe1128da0aad1215e811be7ddf211b56be77.

* Default AnyMap(map_type) constructor

to UNORDERED_MAP_CASINSENSITIVE_KEYS

* Remove CoreBundleContext.dataStorage clear (#845)

Fixes #733

* Removing std::move use with const object [ci skip] (#848)

* Removing std::move use with const [ci skip]

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

* Addressing PR feedback, removing const from complex types and adding
std
move back [ci skip]

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

---------

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

* [ci skip] Update Changelog for #845 (#847)

* Update Chagelog for #845 [ci skip]

* Update Changelog Unreleased section [ci skip]

Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com>

---------

Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com>

* Fix warning "Use of BITWISE AND to check if a flag is set" (#849)

Signed-off-by: Tahar Touati <touati.thr@gmail.com>

* include cstdint in FileSystem.cpp (#850)

vcpkg installation is failing, with this error: 

PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:122:3: error: ‘uint32_t’ was not declared in this scope

PATH/v3.6.0-e25b133cd3.clean/util/src/FileSystem.cpp:71:1: note: ‘uint32_t’ is defined in header ‘<cstdint>’; did you forget to ‘#include <cstdint>’?

Sure enough, when patched with this it will build and install correctly with vcpkg. Other errors are reported but this is the culprit.

* Fixes #840: removes manual reference counting (#841)

* converted registration

* compiled, not passeD

* fixed weak_ptr error, now leaking mock objects

* fixed bug, need to decrement ref count

* updats from last week, test cases failing because of out of date expectations

* all tests are passing with shared and weak pointers to serviceRegistrationBasePrivate

* still passing tests, updated comments and cleaned up

* updating to share dependents

* new issue with dying service

* added coreInfo, maybe passing

* passing tests, removed manual ref counting from referenceBasePrivate, repeated all fast tests to ensure no sporadic failures

* updated comments

* updates before PR

* Removed manual reference counting

The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate.

Signed-off-by: Toby Cormack  <tcormack@mathworks.com>

* Removed manual reference counting and merged with upstream (#840)

The manual reference counting in ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate were removed. Additionally, some properties of ServiceRegistrationBasePrivate were offloaded to a new class ServiceRegistrationCoreInfo which both ServiceRegistrationBasePrivate and ServiceReferenceBasePrivate can access allowing ServiceReferenceBasePrivate to give up ownership of ServiceRegistrationBasePrivate.

Signed-off-by: Toby Cormack  <tcormack@mathworks.com>

* ServiceRegistrationCoreInfo now default destructor

* Updated based on Patty's comments #840

* updated ServiceReferenceBase Constructors for clarity with shared_ptrs

* removed 'move' from serviceRegistry

* attempt at solving mac issue

* updates for lock type and removing unneccessary functions from reference

* lost lock

* changed to custom atomic load

* LockSet addition

* threading support in LockSet

* LockSet not threaded

* no names in func dec

* Incoorporated Jeff's Comments

* Assignment operator didn't fail on my computer, did in github

* updated for Jeff's 5/16 comments

* clang update

* mikes comments and fixes for multithreaded support

* remove ifdefs from BundleRegistry, abide by rule of (0,3,5), and add comments

---------

Signed-off-by: Toby Cormack  <tcormack@mathworks.com>

* Fixes #852: adds a [[nodiscard]] to BundleContext::RegisterService (#863)

* noDiscard update first push

* Jeff's comments, c++14 in cmakelists for makefile test, comments to reference nodiscard

* [ci skip] Updated README to reflect correct compiler/OS versions (#862)

[ci skip]

* Fix code scanning alerts (#861)

Fixes #860, #859, #858, #857, #856, #855, #853

* Ensure multiple listeners for the same factory PID are honoured by `ConfigurationNotifier::AnyListenersForPid` (#865)

* Ensure multiple listeners for the same PID are honoured

Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>

* Fix formatting

Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>

---------

Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>
Co-authored-by: cburgess <cburgess@mathworks.com>

* Code scanning alert fix: Use of a moved from object #864 (#866)

Fixes #864 

* tests passing on linux, all files updated

* Mike and Toby backat it again

* changed second instance of warning?

* reverted naming, final submit

* Fix race condition when concurrently adding to SCRExtensionRegistry (#870)

* Fix race condition when concurrently adding to SCRExtensionRegistry

Fixed a race that can happen when multiple threads are trying to add to the extension registry container.

Fixed a bug with the tests for SCRExtensionRegsitry class never being compiled and run.

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>

* Fix #868: Recoups some of performance losses from PR #841 (#869)

* fixed lockReg shared_ptr

* down to 5% increase from original

* get logs from github to verify behavior

* reverting performance yml and adding move constructor (default) for RegistrationLocks
:

* #Issue873: Redundant calls to .Load() (#874)

* first commit

* test Case

* revert test

* test fix

* naming

* Fixes #718 (#876)

Signed-off-by: Toby Cormack <tcormack@mathworks.com>

* removed an empty line addition.

* fixup some merge issues.

* respond to code review feedback

* code review feedback.

* code review feedback.

* Update TrackedService.h

Remove underscore from names.

* fixing merge

* update _var naming convention

* GetCustomizer_unlocked() addition

* remove getTrackerAsCustomizer

---------

Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>
Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com>
Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>
Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>
Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com>
Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com>
Signed-off-by: Tahar Touati <touati.thr@gmail.com>
Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com>
Signed-off-by: Toby Cormack  <tcormack@mathworks.com>
Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>
Signed-off-by: Toby Cormack <tcormack@mathworks.com>
Co-authored-by: Shane Riley <52603694+shane-riley@users.noreply.github.com>
Co-authored-by: shane-riley (The Mathworks Inc.) <sriley@mathworks.com>
Co-authored-by: xru192 <ryanxu123@gmail.com>
Co-authored-by: xru192 <56376151+xru192@users.noreply.github.com>
Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com>
Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com>
Co-authored-by: pelliott-mathworks <67922241+pelliott-mathworks@users.noreply.github.com>
Co-authored-by: BrianWeed <brian_weed@yahoo.com>
Co-authored-by: carneyweb <mike@carneyweb.com>
Co-authored-by: Ingmar Sittl <79453136+insi-eb@users.noreply.github.com>
Co-authored-by: alchrist <alchrist@mathworks.com>
Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com>
Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com>
Co-authored-by: Aaditya <aadityap@mathworks.com>
Co-authored-by: thrtouati <124062546+thrtouati@users.noreply.github.com>
Co-authored-by: Tristan Ayala <ayalat1@unlv.nevada.edu>
Co-authored-by: tcormackMW <113473781+tcormackMW@users.noreply.github.com>
Co-authored-by: Conor Burgess <Burgess.Conor@gmail.com>
Co-authored-by: cburgess <cburgess@mathworks.com>
Co-authored-by: tcormack <tcormack@mathworks.com>

* CMake Updates for Boost Versioning Fix (#945)

* cmake updates

* behavior put in cmake function

* usFunctionBoostPath update

* Initializer list support (#942)

* get latest on development

* Added support for std::initializer_list constructurs

Updated tests to use new initializer simplifying the code.

* new clone.

* fixed up some test code to make it compile on older compilers.

* fixup.

* updated some tests to check operator=

* check.

* fixed typo in comment.

* added specific tests for initializer list support.

* Revert "get latest on development"

This reverts commit 639f61d44fa2ed989a1add2c8f8a2a774caf7a19.

* test.

* Revert "test."

This reverts commit dd56818941337379f83a0aba6a101f6642f6e5ef.

* Revert "Revert "get latest on development""

This reverts commit 7ef96570ec26a15668f9500aca26b063b9416412.

* Revert "Revert "Revert "get latest on development"""

This reverts commit 6f4d982d565df5959795719bd27308654bd721a7.

* restore.

* update google test to submodule version on development

* update nowide version to match development

* fixed up some comments.

* ServiceComponent build tests cmake configuration (#949)

* use cmake build type

* set to debug by default

* Fix #961 -- hashable references after destruction of RegistrationBase object (#962)

* update hash function

* test case working

* update version

---------

Signed-off-by: Tahar Touati <touati.thr@gmail.com>
Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com>
Signed-off-by: Toby Cormack  <tcormack@mathworks.com>
Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>
Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Signed-off-by: Toby Cormack <tcormack@mathworks.com>
Signed-off-by: tcormack <tcormack@mathworks.com>
Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com
Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>
Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com>
Signed-off-by: Shivam Negi <snegi@mathworks.com>
Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>
Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>
Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com>
Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com>
Co-authored-by: carneyweb <mike@carneyweb.com>
Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com>
Co-authored-by: thrtouati <124062546+thrtouati@users.noreply.github.com>
Co-authored-by: Tristan Ayala <ayalat1@unlv.nevada.edu>
Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com>
Co-authored-by: Conor Burgess <Burgess.Conor@gmail.com>
Co-authored-by: cburgess <cburgess@mathworks.com>
Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com>
Co-authored-by: aadityap <aadityap@mathworks.com>
Co-authored-by: Ingmar Sittl <79453136+insi-eb@users.noreply.github.com>
Co-authored-by: Monika032 <monikaphadnis24@gmail.com>
Co-authored-by: mphadnis <mphadnis@mathworks.com>
Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com>
Co-authored-by: Shane Riley <52603694+shane-riley@users.noreply.github.com>
Co-authored-by: shane-riley (The Mathworks Inc.) <sriley@mathworks.com>
Co-authored-by: xru192 <ryanxu123@gmail.com>
Co-authored-by: xru192 <56376151+xru192@users.noreply.github.com>
Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com>
Co-authored-by: pelliott-mathworks <67922241+pelliott-mathworks@users.noreply.github.com>
Co-authored-by: BrianWeed <brian_weed@yahoo.com>
Co-authored-by: alchrist <alchrist@mathworks.com>

* Bundle Start after Framework Stop race fix (#990)

* merge from master

* r3-8-2

* resolve merge conflicts

* Release 3.8.3

* [ci-skip] fix dynamic targeting pr number

---------

Signed-off-by: The MathWorks, Inc. <alchrist@mathworks.com>
Signed-off-by: The MathWorks, Inc. <jdicleme@mathworks.com>
Signed-off-by: Tahar Touati <touati.thr@gmail.com>
Signed-off-by: ShivamNegi <shivamnegi2019@gmail.com>
Signed-off-by: Toby Cormack  <tcormack@mathworks.com>
Signed-off-by: Conor Burgess <Burgess.Conor@gmail.com>
Signed-off-by: Toby Cormack <tcormack@mathworks.com>
Signed-off-by: tcormack <tcormack@mathworks.com>
Signed-off-by: The MathWorks, Inc. aadityap@mathworks.com
Signed-off-by: Ingmar Sittl <ingmar.sittl@elektrobit.com>
Signed-off-by: Ingmar Sittl <Ingmar.Sittl@elektrobit.com>
Signed-off-by: Shivam Negi <snegi@mathworks.com>
Signed-off-by: The MathWorks, Inc. <aadityap@mathworks.com>
Signed-off-by: The MathWorks, Inc. <bweed@mathworks.com>
Signed-off-by: The MathWorks, Inc. <pelliott@mathworks.com>
Co-authored-by: pelliott-mathworks <67922241+pelliott-mathworks@users.noreply.github.com>
Co-authored-by: Jeff <DiClemente>
Co-authored-by: Jeff DiClemente <jeffdiclemente@users.noreply.github.com>
Co-authored-by: Alexander Christoforides <38366659+achristoforides@users.noreply.github.com>
Co-authored-by: BrianWeed <brian_weed@yahoo.com>
Co-authored-by: carneyweb <mike@carneyweb.com>
Co-authored-by: Shivam Negi <shivamnegi2019@gmail.com>
Co-authored-by: thrtouati <124062546+thrtouati@users.noreply.github.com>
Co-authored-by: Tristan Ayala <ayalat1@unlv.nevada.edu>
Co-authored-by: Conor Burgess <Burgess.Conor@gmail.com>
Co-authored-by: cburgess <cburgess@mathworks.com>
Co-authored-by: Aaditya Sakharam Patil <36245341+aadityap-mathworks@users.noreply.github.com>
Co-authored-by: aadityap <aadityap@mathworks.com>
Co-authored-by: Ingmar Sittl <79453136+insi-eb@users.noreply.github.com>
Co-authored-by: Monika032 <monikaphadnis24@gmail.com>
Co-authored-by: mphadnis <mphadnis@mathworks.com>
Co-authored-by: Shane Riley <52603694+shane-riley@users.noreply.github.com>
Co-authored-by: shane-riley (The Mathworks Inc.) <sriley@mathworks.com>
Co-authored-by: xru192 <ryanxu123@gmail.com>
Co-authored-by: xru192 <56376151+xru192@users.noreply.github.com>
Co-authored-by: Jeff DiClemente <jdicleme@mathworks.com>
Co-authored-by: alchrist <alchrist@mathworks.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

No branches or pull requests

3 participants