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,
ContinuableClassInfo
andContinuableClassInfoResolver
functionality is now a part of "providers" internals. ExtendedClasspathResourceLoader
is replaced everywhere withMorphingResourceLoader
to avoid usage of thread-locals to find bytecode of classes defined at run-time.- CDI Java Agent is fully revisited -- now it uses
ResourceTransformationFactory
+ResourceTransformer
pattern, in the same way as core JavaFlow Agent. As a bonus, Proxy-tailoredResourceTransformationFactory
may be used withContinuableClassLoader
as well. - Common code of both agents is extracted to separate artifact.
ContinuableClassLoader
is 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.ContinuableClassLoader
now extends regularClassLoader
rather thenURLClassLoader
-- in majority of cases this is exactly what's necessary; if additional resources should be passed toContinuableClassLoader
then 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.bootstrap
innet.tascalate.javaflow.tools.runtime
- Checking for classes sub-types / super-types is fully re-implemented, see
ClassHierarchy
(replacesInheritanceLookup
)