Currently library are loaded LOCAL for bundles. This works alright, but makes it hard to add a concept of exporting and importing libraries.
The trick is that the NEEDED header in the importing libraries should match the target exported library SONAME header and no other exported libraries SONAME headers. One solution to make this work is to alter the NEEDED & SONAME runtime.
For glibc there is now an other alternative, namely using dlmopen. dlmopen makes it possible to load libraries in a given namespace. For bundle this can be used to create a library namespace per bundle and load exported libraries int importing bundle namespace. A clean solution, but this currently only works for glibc (linux).
There was a locking example which also functioned as a performance test to measure the impact of using services instead of direct function calls. During the removal of APR this example stopped working. Add it back, fix it and add a C++ use case as example. See locking example tree
Celix is growing and getting more sub project, this is fine but maybe the structure needs a cleanup to create a more clear root directory structure.
The current implementation uses JSON over multicast UDP or over ZMQ.
One or more could be added. i.e. serialization based on Apache-Avro, communication over TCP / Kafka / Shared Memory
Add interfaces for other languages (Python / Rust / Go / …)