Project Plan For AspectJ, version 1.0
Introduction
AspectJ major versions match up with Java versions. Currently Java is at 1.7 and AspectJ is
about to release the 1.7 version after 13 releases at 1.6 (1.6.0 -> 1.6.12). The AspectJ project then releases
service refreshes to that major version every
few months. The current release model is at least something every 3 months - sometimes a milestone,
sometimes a full release.
AspectJ always maintains that HEAD will build clean and pass all the tests we have (currently
around 4400). This means the development builds created from HEAD after every commit are always at least
as good as the previous build.
Release Deliverables
AspectJ releases are delivered as a single .jar download that installs a compiler and the related
tools and documentation when executed. The packaging of an AspectJ release into plugins consumable in
an Eclipse environment is done by the AJDT project.
Release Milestones
| 1.6.12 | 10/18/2011 | AspectJ 1.6.12 (service refresh on 1.6) |
| 1.7.0M1 | 12/16/2011 | AspectJ 1.7.0 milestone 1 |
Target Environments
During AspectJ 1.6.6 development the decision was made to exploit generics internally and
this has improved the quality of the codebase. However, this means the 1.6.6 weaver (and therefore compiler) now require
a Java 1.5 runtime. Previous versions of AspectJ required only Java 1.4
The woven code produced by AspectJ will run on any VM from Java 1.3 onwards.
The compiler/weaver will run on 1.5 but with AspectJ 1.7 these have the ability to compile 1.7 source code
(using 1.7 features like the diamond operator) or weave into 1.7 bytecode that is exploiting new bytecode
features like invokedynamic.
Internationalization
We have bundles for many of the messages in the project but they are not translated.
Compatibility with Previous Releases
AspectJ is strong on compatibility and any level of AspectJ is always intended to parse code/aspects
built with any earlier version of AspectJ without requiring recompilation.
Themes and Priorities
These are the larger themes and priorities right now:
Improving the IDE experience
This is about maintaining an expected level of functionality and responsiveness when
a user switches from a Java project to an AspectJ project. The latest requirement
in this area is the need to persist project state between eclipse restarts - otherwise a costly full build is necessary
each time eclipse is started. This is *not* easy as the object graph after a build is not currently of the right
form to persist.
- No items.
- No items.
Memory Usage
Improving it across all parts of AspectJ: compilation, weaving and load-time weaving.
- No items.
- No items.
Groovy weaving
Given the popularity of groovy, these enhancements cover coping with weaving groovy class files
- No items.
- No items.
Full set of work items for next release
The fixes and enhancements that are in 1.7.0 development builds and those still scheduled to be completed before final release.
- upgrade to Java7 (Eclipse 3.7.1) [364525]
(target milestone: 1.7.0) - attribute problems with Java 7 compilation [376351]
(target milestone: 1.7.0) - iajc does not support source compliance level 1.7 [376990]
(target milestone: 1.7.0) - VerifyError: Expecting a stackmap frame [353467]
(target milestone: 1.7.0) - neo4j NPE [362956]
(target milestone: 1.7.0) - NPE got when dealing with Bootstrap classloaded classes [363962]
(target milestone: 1.7.0) - MissingImplementationException when an annotation exists with child annotations. [363979]
(target milestone: 1.7.0) - Cannot use pointcut in @DeclareError; stack overflow [364380]
(target milestone: 1.7.0) - LTW weaved and generated byte code caching [367673]
(target milestone: 1.7.0) - java.lang.NullPointerException at MethodVerifier.checkForRedundantSuperinterfaces [368018]
(target milestone: 1.7.0) - type construction for signature makes mistakes with wildcards [371684]
(target milestone: 1.7.0) - org.aspectj.weaver.BCException compiling @DeclareParents with value using "||" [371998]
(target milestone: 1.7.0) - NotSerializableException: JoinPointImpl$StaticPartImpl while serializing the load time woven classes [373130]
(target milestone: 1.7.0) - Memory leak in CompilationAndWeavingContext leading to PermGen OOME [373195]
(target milestone: 1.7.0) - NPE in MethodVerifier.checkForRedundantSuperinterfaces [373733]
(target milestone: 1.7.0) - Performance regression in 1.6.12 [374745]
(target milestone: 1.7.0) - Performance - improve pointcut expensiveness calculation [374964]
(target milestone: 1.7.0) - AspectJ throws Nullpointer after its IDE plugin update [376139]
(target milestone: 1.7.0) - update wizard install location to 1.7 from 1.6 [380822]
(target milestone: 1.7.0) - NPE in BcelTypeMunger.createBridgeMethod [382189]
(target milestone: 1.7.0) - Problems with "nested" generic return types in ITDs [382435]
(target milestone: 1.7.0) - An package-level abstract generic privileged aspect, which extends an abstract generic aspect, gives a IlligalStateException on a method call in around advice [382723]
(target milestone: 1.7.0) - make ajcore file creation optional [384189]
(target milestone: 1.7.0) - upgrade to Eclipse 3.6 JDT core [310504]
(target milestone: 1.7.0) - NullPointerException at org.aspectj.org.eclipse.jdt.internal.compiler.lookup.MethodVerifier.checkForRedundantSuperinterfaces [372962]
(target milestone: 1.7.0)
- upgrade to Java7 (Eclipse 3.7.1) [364525]
- No items.
Planned changes for future releases
Items planned
- No items.
