diff options
-rw-r--r-- | docs/release/README-1.9.21.adoc | 42 | ||||
-rw-r--r-- | docs/release/README-1.9.9.adoc | 1 |
2 files changed, 42 insertions, 1 deletions
diff --git a/docs/release/README-1.9.21.adoc b/docs/release/README-1.9.21.adoc index de9447937..fab41ae57 100644 --- a/docs/release/README-1.9.21.adoc +++ b/docs/release/README-1.9.21.adoc @@ -5,7 +5,47 @@ // AspectJ_JDK_Update: Each a.b.c release needs a new release notes document. For a.b.c.d minors, the existing a.b.c // document can be updated. After copying this document, remove the comment from the previous one. -The releases 1.9.21 and 1.9.21.1 are described together in this document. +The releases 1.9.21, 1.9.21.1 and 1.9.21.2 are described together in this document. + += AspectJ 1.9.21.2 + +_© Copyright 2024 Contributors. All rights reserved._ + +_Release info: 1.9.21.2 available 13-Mar-2024_ + +Please note that Bugzilla for issue management is deprecated and new issues should be filed as +https://github.com/eclipse-aspectj/aspectj/issues/new[GitHub issues]. The list of issues addressed for 1.9.21.2 can be +found here: + +* https://github.com/eclipse-aspectj/aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.21.2[GitHub 1.9.21.2] +* https://bugs.eclipse.org/bugs/buglist.cgi?bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&f0=OP&f1=OP&f3=CP&f4=CP&j1=OR&list_id=16866879&product=AspectJ&query_format=advanced&target_milestone=1.9.21.2[Bugzilla 1.9.21.2] + +== New features + +AspectJ 1.9.21.2 is a maintenance release with no new language features, but an important improvement and a bugfix, +see below. + +== Improvements + +Previously, when targeting the same join point from multiple around advices in annotation-style @AspectJ syntax, there +were limitations in functionality in concurrent (multi-threaded) situations, if the around advice code was not inlined. +This was improved in xref:README-1.9.9#async_proceed[AspectJ 1.9.9] (see also https://github.com/eclipse-aspectj/aspectj/issues/128[issue #128]), +but the improvement only applied to child threads directly created during aspect execution and would fail for +pre-existing, long-lived threads, e.g. thread pools used by executor services. Furthermore, the improvement could lead +to memory leaks, not cleaning up thread-local references to posssibly expensive objects. In such situations, users had +to switch to native-syntax aspects which never had that problem to begin with due to their different internal structure. + +Now, https://github.com/eclipse-aspectj/aspectj/issues/141[issue #141] has been resolved, closing the gap and, as well +as possible given their different internal structure, bringing @AspectJ aspects up to par with native-syntax aspects in +concurrent situations, while simultaneously also addressing the memory leak https://github.com/eclipse-aspectj/aspectj/issues/288[issue #288]. This is a substantial improvement, and annotation-style syntax users are strongly engouraged to upgrade. Thanks +to user _pagrawalgit_ for raising the memory leak issue and triggering me to think about the concurrency issue more +broadly and finally solve both in one shot. + +== Other changes and bugfixes + +The fix for https://github.com/eclipse-aspectj/aspectj/issues/277[issue #277] in AspectJ 1.9.21.1 introduced a +regression bug in the optional weaving cache now fixed in https://github.com/eclipse-aspectj/aspectj/issues/285[issue #285]. +Thanks to user _Kimming Lau_ for raising and re-testing both issues. = AspectJ 1.9.21.1 diff --git a/docs/release/README-1.9.9.adoc b/docs/release/README-1.9.9.adoc index 98834a7bb..80408baf1 100644 --- a/docs/release/README-1.9.9.adoc +++ b/docs/release/README-1.9.9.adoc @@ -38,6 +38,7 @@ AspectJ 1.9.9 supports https://openjdk.java.net/projects/jdk/18/[Java 18] and it == Improvements +[[async_proceed]] In annotation style aspects, asynchronous `proceed()` calls in `@Around` advice now works in threads created from within the advice. Previously, this was only working in native syntax aspects. There is still a limitation with regard to asynchronous proceed, if you do not create the thread in the advice but want to use e.g. an `ExecutorService` with its |