I would like to perform some actions for which I think I need your approval.
1. Memory leak in ExtendedObjectSupplier
We got a bug report about a memory leak within several ExtendedObjectSupplier (although just reported for the TranslationObjectSupplier).
The main reason is that for supporting re-injection the IRequestor are cached in the supplier implementations. But the framework does not provide methods for cleaning up if those IRequestor are discarded.
One part of the solution would be to inform the ExtendedObjectSupplier if an EclipseContext is disposed. Since there is no API for that I would suggest to make use of the EventAdmin to send an asynchronous event that can be used to inform OSGi services like ExtendedObjectSupplier that they should cleanup their caches.
I proposed a patch via Gerrit. But it introduces the sending of an event on dispose and the existing ExtendedObjectSupplier will need to additionally implement the EventHandler interface. It is not marked as an API breakage (and I even don't think it is one), but I wanted to get feedback on this before merging it.
Also note that this is probably not the complete solution, as there might be still IRequestor that are created and discarded for one EclipseContext that is not disposed. But the only idea we had to solve this was to introduce cleanup threads that periodically try to cleanup IRequestor. But I don't want to introduce that now because of possible performance leaks.
2. Publish org.eclipse.e4.core.di.extensions annotations
I would like to publish the annotations in org.eclipse.e4.core.di.extensions. Most of them are pretty mature and used the way they are for several years. I would like to remove the x-friends directive to make it public API. As this would also change the major version of the bundle to 1.0.0 your approval is needed.
3. Deprecate MessageXxx functional interfaces
I introduced some MessageXxx functional interfaces once the bundle o.e.e4.core.services required Java 7. Now that we require Java 8 these interfaces could be replaced with the Java 8 interfaces. Such a change should not even be noticable by users. As I learned we first need to mark the interfaces as deprecated so they can be removed in the future.
Please give me some feedback so I know if and how I can proceed.