Skip to content

Releases: vsilaev/tascalate-javaflow

Tascalate JavaFlow 2.6.0

26 Feb 18:14
Compare
Choose a tag to compare

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)

Tascalate JavaFlow 2.5.0

16 Feb 08:16
4b535c3
Compare
Choose a tag to compare

This is a major release that adds full support for Java 9+ (up to Java 11 inclusive). Additionally, there are a lot of improvements for Java agents functionality.

  1. Tools now supports Java 11 bytecode.
  2. All artifacts are multi-versioned modular JAR-s that works with Java versions 1.6 to 11.
  3. Shaded version of ObjectWeb ASM 7.0 is used instead of "raw" ASM.
  4. commons-logging (outdated, non-modular) is replaced with SLF4J (modular).
  5. In generated classes marker static field is replaced with marker continuation @Skip -- necessary to let agents re-transform classes when attached dynamically (it's forbidden to add methods/fields, even static ones).
  6. Run-time Java agents now correctly re-transform classes.
  7. Checking core java classes by name is replaced with checks by classloader, anything below System Class Loader (boot + extension, or platform) is considered a source of core java classes.
  8. Checks for marker interfaces that mark non-continuable classes is now externalized and extensible
  9. ContinuableClassLoader is refactored.
  10. Some extensions to SPI interfaces are introduced to support functionality mentioned above.

Tascalate JavaFlow 2.4.0

03 Dec 12:41
Compare
Choose a tag to compare

This is a performance optimization release with API enhancements.

  1. Core Stack class was intensively revisited: expensive debug statements now are protected with the check for a debug logging level (this alone yields almost 300% of speed-up in corresponding tests); all primitive types now are handled in single long[] array to save time on arrays copying (1 instead of 4) when continuation is resumed.
  2. Continuation now may be created as mutli-shot (available previously, it was the only option) and as a single-shot. Unlike multi-shot continuations, single-shot ones may be resumed only once (i.e. Continuation.again() is not supported), but this functionality (single-shot) is what is necessary for majority of use-cases. Being capable to resume only once, one-shot continuations have very serious performance optimizations and outperforms multi-shot continuations by the factor of 2-2.5
  3. More well-known interfaces fro popular CDI containers are supported; Usage of continuations with JEE container was proved by an example for WildFly (see separate tascalate-javaflow-examples project)

Tascalate JavaFlow 2.3.2

24 Aug 11:52
4d69f4f
Compare
Choose a tag to compare

Adding support for RetroLambda output

Tascalate JavaFlow 2.3.1

23 Aug 08:16
Compare
Choose a tag to compare

Bug fix release (invalid check for JDK class names in instrumentation agents)

Tascalate JavaFlow 2.3.0

20 Aug 10:38
41de03e
Compare
Choose a tag to compare

BREAKING CHANGES!!! PLEASE READ!!!

  • net.tascalate.javaflow.extras artifact is withdrawn, its code serves as a basis for the project Tascalate JavaFlow Util. The code of this artifact has no relation with origins of Apache Commons JavaFlow, so I can use more permissive license for the new project. Plus, it becomes obvious that this code have it's own release cycle (more often than core)
  • All examples are moved to separate project Tascalate JavaFlow Examples. This helps to avoid loading huge unnecessary dependencies (JBoss Weld, Apache OpenWebBeans), to reduce overall build and release time.
  • net.tascalate.javaflow.extras artifact is renamed to net.tascalate.javaflow.tools.runtime -- this name better suits for the lib that holds ContinuableClassLoader that transforms bytecode on-the-fly.

Enchancements

  • Agents now correctly implement agentmain method and re-transform classes if agents were attached after application start.
  • Transformers now skip JDK classes by well-known name prefixes (java.*, javax.*, sun.* etc) without analyzing bytecode - this speeds-up startup a lot

Tascalate JavaFlow 2.2.3

03 Aug 09:57
Compare
Choose a tag to compare

This release both fixes some issues with code generation as well as adds new functionality

  1. Fix issue with incorrectly handling bridged methods (continuation was applied to the bridge but not to the 'bridged' specialization in subclass -- this leads to run-time error)
  2. Extending InterceptorSupport to work both in CDI generated proxies and hand-written proxies
  3. Adding an example to show how InterceptorSupport may be used with java.lang.Proxy
  4. Refactoring existing CDI code transformers (OWB, Weld) to use InterceptorSupport instead of repeating logic
  5. Adding experimental support for CDI with Spring AOP (no example yet)
  6. Adding more continuable versions of functional interfaces (ContinuableBiConsumer, ContinuableFunction, ContinuablePredicate) to extras project

Tascalate JavaFlow 2.2.2

15 May 10:52
Compare
Choose a tag to compare

This is a maintenance release with the following fixes / changes:

  1. Fix name of misspelled CloseableIterator (was ClosableIterator) -- may affect your client code while this is a part of the public Extras API.
  2. Refactoring Continuations class, adding parameter to specify whether to return current continuation values from streams/iterators.
  3. Separate methods in Continuations for regular / continuable iterations.
  4. Optimizing inheritance lookup in bytecode transformers (via caching results).
  5. Coding style & formatting fixes accross the projects.

Tascalate JavaFlow 2.2.1

21 Mar 16:32
a098852
Compare
Choose a tag to compare

Fixes severe bugs in FastClassVerifier (all ASM versions) these lead to generation of invalid code

Tascalate JavaFlow 2.2

19 Jan 11:30
0fe3c10
Compare
Choose a tag to compare

Remove a dependency to runtime-api from tools to both reduce tools size and avoid any class-loading conflicts