Tascalate JavaFlow 2.6.0
This release addresses performance and memory issues with some tools.
- Caching is revisited to avoid both hard-references to resources like
ClassLoader-s and to efficiently cache analyzers' results (mostly, inheritance type information and information about continuable classes-methods) - Public SPI is simplified,
ContinuableClassInfoandContinuableClassInfoResolverfunctionality is now a part of "providers" internals. ExtendedClasspathResourceLoaderis replaced everywhere withMorphingResourceLoaderto avoid usage of thread-locals to find bytecode of classes defined at run-time.- CDI Java Agent is fully revisited -- now it uses
ResourceTransformationFactory+ResourceTransformerpattern, in the same way as core JavaFlow Agent. As a bonus, Proxy-tailoredResourceTransformationFactorymay be used withContinuableClassLoaderas well. - Common code of both agents is extracted to separate artifact.
ContinuableClassLoaderis fixed: loading of "platform" classes now performed correctly via Platform Class Loader (and regardless of "parentFirst" settings). Additionally, the class avoid re-loading itself and classes it depends on in "parent-first" fashion.ContinuableClassLoadernow extends regularClassLoaderrather thenURLClassLoader-- in majority of cases this is exactly what's necessary; if additional resources should be passed toContinuableClassLoaderthen custom URLClassLoader must be set as its parent.- It's now possible to bootstrap un-instrumented (at build-time) application with continuations support -- see
ApplicationWeaver.bootstrapinnet.tascalate.javaflow.tools.runtime - Checking for classes sub-types / super-types is fully re-implemented, see
ClassHierarchy(replacesInheritanceLookup)