In previous AspectJ major releases the first milestone normally tolerates weaving bytecode for the comparable Java level whilst the ability to compile source code for that Java level comes later. However, AspectJ 1.8.0.M1 is a Java 8 compiler. So why change the approach this time? Some consumers of AspectJ are choosing to exploit Java8 library features even though they are not using Java8 language constructs in their source. The Eclipse JDT compiler (in eclipse 4.3) actually includes a number of changes to facilitate this (basically compiling with -source 1.7 but on top of a 1.8 JRE). The changes are necessary because the 1.8 classes include metadata that the 1.7 compiler just isn't expecting. For example default method implementations in interfaces. In order to support this mode of working AspectJ would need to update to the Eclipse 4.3 compiler. However, performing upgrades of the compiler inside AspectJ is non trivial and to avoid doing the upgrade to 4.3 and then doing a further upgrade to the Java8 compiler, we decided to jump straight to the Java8 compiler which already includes these changes.