On 2/8/22 23:23, Pepijn Noltes wrote:
Hi All,
It has been a while since the last Celix release and I think it is time to
prepare for the next release.
Thanks for making a more stable Celix release happen.
The reason why I did not propose a release earlier, also has to do with C++
support and specifically which version of C++ (C++11, C++14, C++17 or maybe
even C++20) to support.
Releasing a new Celix version earlier could have meant we were "stuck" with
C++11 or we needed to release a major (backwards incompatible) update.
What's the minimum required version of gcc to support this?
In embedded linux world, toolchain is largely a SOC vendor thing,
i.e., we use whatever they provide. None of the seven toolchains I use
in my daytime job has gcc 7 support. That's unfortunate while I see no
chance
of change in the coming 2 years.
Is the nhohmann/json approach of support multiple C++ versions acceptable?
If so, I consider making future PRs after the release under discussion
happens.
Another change is that celix now handles all service registration, service
un-registration, service tracker start and service tracker stop events on a
single Celix event thread.
This was done to be able to prevent multithreading programming for users in
certain situations. Please note that this is a deviation from the OSGi
spec.
This solution is elegant. However, invoking service on event loop is bad.
Any blocking service is blocking the whole world. We cannot require
every service
to be non-blocking and users can call celix_bundleContext_useService for
whatever
service they want to use.
I'll make a PR before this weekend.
Before releasing I would like to update some of the documentation and I am
currently busy with preparing a pull request for that.
Are there any other requests, remarks or things that need attention
concerning a new Celix release?
Two things come to my mind:
1. return value of remote services ([1]):
Should we employ error code scheme like HRESULT ([2]) to fix this?
2. Celix package ([3])
The main pain of using Celix is its cross-compilation (including all its
dependency).
C/C++ package/dependency manager like conan/vcpkg solve this kind of
problem like npm does for js.
I use conan for my celix build. Having upstream support will be way better.
Greetings,
Pepijn
[1] https://github.com/apache/celix/issues/396
[2] https://en.wikipedia.org/wiki/HRESULT
[3] https://github.com/apache/celix/issues/204
--
Peng Zheng