aboutsummaryrefslogtreecommitdiffstats
path: root/docs/dist/doc/README-198.html
diff options
context:
space:
mode:
authorAlexander Kriegisch <Alexander@Kriegisch.name>2021-10-08 10:55:37 +0200
committerAlexander Kriegisch <Alexander@Kriegisch.name>2021-10-08 11:07:16 +0200
commite16efa31d44591dd2a14e552a1fd71cd809d42a0 (patch)
tree03306db574e001cb71c1c997d7fd7d94deeeb27b /docs/dist/doc/README-198.html
parent25d4a1a3d730828a4b5f98e7af89e04488882f01 (diff)
downloadaspectj-e16efa31d44591dd2a14e552a1fd71cd809d42a0.tar.gz
aspectj-e16efa31d44591dd2a14e552a1fd71cd809d42a0.zip
Add AspectJ 1.9.8 release notes
Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>
Diffstat (limited to 'docs/dist/doc/README-198.html')
-rw-r--r--docs/dist/doc/README-198.html105
1 files changed, 105 insertions, 0 deletions
diff --git a/docs/dist/doc/README-198.html b/docs/dist/doc/README-198.html
new file mode 100644
index 000000000..825d872ef
--- /dev/null
+++ b/docs/dist/doc/README-198.html
@@ -0,0 +1,105 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
+<html>
+
+<head>
+<title>AspectJ 1.9.8 Readme</title>
+<style type="text/css">
+ <!--
+ P { margin-left: 20px; }
+ PRE { margin-left: 20px; }
+ LI { margin-left: 20px; }
+ H4 { margin-left: 20px; }
+ H3 { margin-left: 10px; }
+ -->
+</style>
+</head>
+
+<body>
+<div align="right"><small>&copy; Copyright 2021 Contributors. All rights reserved.</small></div>
+
+<h1>AspectJ 1.9.8</h1>
+
+<p>
+ Please note that Bugzilla for issue management is deprecated and new issues should be filed as
+ <a href="https://github.com/eclipse/org.aspectj/issues/new">GitHub issues</a>.
+ The list of issues addressed for 1.9.8 can be found
+ <a href="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.8">here for Bugzilla</a>
+ and <a href="https://github.com/eclipse/org.aspectj/issues?q=is%3Aissue+is%3Aclosed++milestone%3A1.9.8">here for GitHub issues</a>.
+</p>
+
+<h2>New features</h2>
+
+<p>
+ AspectJ 1.9.8 supports <a href="https://openjdk.java.net/projects/jdk/17/">Java 17</a> and its final and preview
+ features, such as:
+</p>
+<ul>
+ <li>sealed classes (final in Java 17, previews in Java 15, 16 and AspectJ 1.9.7)</li>
+ <li>pattern matching for switch</li>
+</ul>
+<p>
+ For features marked as preview on a given JDK, you need to compile with <tt>ajc --enable-preview</tt> and run with
+ <tt>java --enable-preview</tt> on that JDK.
+</p>
+<p>
+ Please note that you cannot run code compiled with preview features on any other JDK than the one used for
+ compilation. For example, records compiled with preview on JDK 15 cannot be used on JDK 16 without recompilation. This
+ is a JVM limitation unrelated to AspectJ. Also, e.g. sealed classes are preview-1 on JDK 15 and preview-2 on JDK 16.
+ You still need to recompile, no matter what.
+</p>
+<p>
+ Furthermore, the <tt>--release N</tt> compiler option for correct cross-compilation to previous JDK bytecode + API
+ versions is now supported by AJC. Previously, the option existed (inherited by ECJ) but did not work correctly.
+</p>
+
+<h3>Code examples</h3>
+
+<p>
+ You can find some sample code in the AspectJ test suite under the respective AspectJ version in which the features
+ were first supported (possibly as JVM preview features):
+</p>
+<ul>
+ <li>
+ <a href="https://github.com/eclipse/org.aspectj/tree/master/tests/features198/compiler_release">
+ Cross-compilation to legacy JDK
+ </a>:
+ An example class which only works correctly on JDK 8 when compiled with <tt>--release 8</tt> due to API changes in
+ the JDK. Simply <tt>-source 8 -target 8</tt> would not be enough in this case.</li>
+ <li>
+ <a href="https://github.com/eclipse/org.aspectj/tree/master/tests/features198/java17">
+ Pattern matching for switch
+ </a>
+ </li>
+</ul>
+
+<h2>Using LTW on Java 16+</h2>
+
+<p>
+ Please note that if you want to use load-time weaving on Java 16+, the weaving agent collides with
+ <a href="https://openjdk.java.net/jeps/396">JEP 396 (Strongly Encapsulate JDK Internals by Default)</a>. Therefore,
+ you need to set the JVM parameter <tt>--add-opens java.base/java.lang=ALL-UNNAMED</tt> in order to enable aspect
+ weaving. This is due to the fact that the weaver uses internal APIs for which we have not found an adequate
+ replacement yet when defining classes in different classloaders.
+</p>
+
+<h2>Other changes and bug fixes</h2>
+
+<ul>
+ <li>
+ The AspectJ compiler no longer works on JDK 8-10. The minimum compile-time requirement for AspectJ is JDK 11 due
+ to upstream changes in the Eclipse Java Compiler (subset of JDT Core), which AspectJ is a fork of. You can still
+ compile to legacy target versions as low as Java 1.3, but the compiler itself (and probably also the load-time
+ weaver) needs JDK 11.
+ </li>
+ <li>Document build profiles and properties in <i>docs/developer/BUILD.md</i></li>
+ <li>Add a guide for setting up an AspectJ development environment in <i>docs/developer/IDE.md</i></li>
+ <li>Allowed JAR saving if <tt>-proceedOnError</tt> is specified</li>
+</ul>
+
+<p>
+ Available: 1.9.8 available DD-MMM-2021
+</p>
+
+</body>
+
+</html>