Skip to content

Tascalate JavaFlow 2.6.0

Compare
Choose a tag to compare
@vsilaev vsilaev released this 26 Feb 18:14
· 68 commits to master since this release

This release addresses performance and memory issues with some tools.

  1. 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)
  2. Public SPI is simplified, ContinuableClassInfo and ContinuableClassInfoResolver functionality is now a part of "providers" internals.
  3. ExtendedClasspathResourceLoader is replaced everywhere with MorphingResourceLoader to avoid usage of thread-locals to find bytecode of classes defined at run-time.
  4. CDI Java Agent is fully revisited -- now it uses ResourceTransformationFactory + ResourceTransformer pattern, in the same way as core JavaFlow Agent. As a bonus, Proxy-tailored ResourceTransformationFactory may be used with ContinuableClassLoader as well.
  5. Common code of both agents is extracted to separate artifact.
  6. 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.
  7. ContinuableClassLoader now extends regular ClassLoader rather then URLClassLoader -- in majority of cases this is exactly what's necessary; if additional resources should be passed to ContinuableClassLoader then custom URLClassLoader must be set as its parent.
  8. It's now possible to bootstrap un-instrumented (at build-time) application with continuations support -- see ApplicationWeaver.bootstrap in net.tascalate.javaflow.tools.runtime
  9. Checking for classes sub-types / super-types is fully re-implemented, see ClassHierarchy (replaces InheritanceLookup)