You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README-1.9.22.adoc 3.7KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. = AspectJ 1.9.22
  2. // 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
  3. // document can be updated. After copying this document, remove the comment from the previous one.
  4. _© Copyright 2024 Contributors. All rights reserved._
  5. _Release info: 1.9.22 available 23-Mar-2024_
  6. Please note that Bugzilla for issue management is deprecated and new issues should be filed as
  7. https://github.com/eclipse-aspectj/aspectj/issues/new[GitHub issues]. The list of issues addressed for 1.9.22 can be
  8. found here:
  9. * https://github.com/eclipse-aspectj/aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.22[GitHub 1.9.22]
  10. * 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.22[Bugzilla 1.9.22]
  11. == New features
  12. AspectJ 1.9.22 supports https://openjdk.java.net/projects/jdk/22/[Java 22], its final and preview features, such as:
  13. * JEP 456: Unnamed Variables & Patterns
  14. * JEP 459: String Templates (Second Preview)
  15. * JEP 463: Implicitly Declared Classes and Instance Main Methods (Second Preview)
  16. * JEP 447: Statements before super(...) (Preview)
  17. The following Java 22 features are API or JVM only, therefore irrelevant for the compiler and should just work
  18. out of the box:
  19. * JEP 423: Region Pinning for G1
  20. * JEP 454: Foreign Function & Memory API
  21. * JEP 458: Launch Multi-File Source-Code Programs
  22. * JEP 462: Structured Concurrency (Second Preview)
  23. * JEP 464: Scoped Values (Second Preview)
  24. * JEP 457: Class-File API (Preview)
  25. * JEP 461: Stream Gatherers (Preview)
  26. * JEP 460: Vector API (Seventh Incubator)
  27. == Improvements
  28. * No major improvements
  29. == Other changes and bug fixes
  30. * No major bug fixes
  31. == AspectJ usage hints
  32. [[ajc_build_system_requirements]]
  33. === AspectJ compiler build system requirements
  34. Since 1.9.21, the AspectJ compiler `ajc` (contained in the `aspectjtools` library) no longer works on JDKs 11 to 16. The
  35. minimum compile-time requirement is now JDK 17 due to upstream changes in the Eclipse Java Compiler (subset of JDT
  36. Core), which AspectJ is a fork of. You can still compile to legacy target versions as low as Java 1.3 when compiling
  37. plain Java code or using plain Java ITD constructs which do not require the AspectJ runtime `aspectjrt`, but the
  38. compiler itself needs JDK 17+. Just like in previous AspectJ versions, both the runtime `aspectjrt` and the load-time
  39. weaver `aspectjweaver` still only require JRE 8+.
  40. History: Since 1.9.8, the AspectJ compiler ajc needed JDK 11+, before then JDK 8+.
  41. [[ltw_java_16]]
  42. === Use LTW on Java 16+
  43. **Since AspectJ 1.9.21.1, using `--add-opens` is no longer necessary!** The additional JVM command-line option was
  44. necessary for LTW on JRE 16+ in all AspectJ versions up to 1.9.21. Since AspectJ 1.9.21.1, the LTW agent uses an
  45. alternative approach for defining new classes during weaving, which works without `--add-opens` - at least for now, i.e.
  46. JDKs 8 to 22. There still is no canonical solution, because link:https://bugs.openjdk.org/browse/JDK-8200559[JDK-8200559]
  47. is still unresolved since 2018.
  48. [[compile_with_preview]]
  49. === Compile with Java preview features
  50. For features marked as preview on a given JDK, you need to compile with `ajc --enable-preview` and run with
  51. `java --enable-preview` on that JDK.
  52. Please note, that you cannot run code compiled with preview features on any other JDK than the one used for compilation.
  53. For example, records compiled with preview on JDK 15 cannot be used on JDK 16 without recompilation. This is a JVM
  54. limitation unrelated to AspectJ. Also, e.g. sealed classes are preview-1 on JDK 15 and preview-2 on JDK 16. You still
  55. need to recompile, no matter what.