Project Plan For AspectJ, version 1.0
Introduction
AspectJ major versions match up with Java versions. Currently Java is at 1.6 and so AspectJ
is also at 1.6. The AspectJ project then releases service refreshes to that major version every
few months. Current release model is a point release every 3 months, this has worked through 2008
and so far through 2009.
AspectJ always maintains that HEAD will build clean and pass all the tests we have (currently
around 4200). 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.5 | 06/30/2009 | Service refresh of AspectJ 1.6 |
| 1.6.6 | 09/31/2009 | Service refresh of AspectJ 1.6 |
| 1.6.7 | 12/31/2009 | Service refresh of AspectJ 1.6 |
| 1.6.8 | 03/31/2010 | Service refresh of AspectJ 1.6 |
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.1 onwards.
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 (target 1.6.7)
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.
- Committed
- No items.
- Proposed
- [plan][incremental] persistent incremental state objects [269554] (target milestone: 1.6.7)
Memory Usage (target 1.6.7)
Improving it across all parts of AspectJ: compilation, weaving and load-time weaving
- Committed
- No items.
- Proposed
Reusable Matching (ongoing)
The weaver currently matches based on a bytecode representation of compiled types. A reusable pointcut matcher would
allow other representations of the types to be used for matching purposes. A key goal here would be support for a JDT Java Element
representation of types - this would mean compilation of code would no longer be required to determine a match. This would
result in faster matching in the IDE (matching as you type..) and enable better support for scenarios where weaving is not done
until later - for example development of aspects for use with the Equinox Aspects project.
- Committed
- No items.
- Proposed
Groovy weaving (1.6.7)
Given the popularity of groovy, these enhancements cover coping with weaving groovy class files
- Committed
- No items.
- Proposed
- [plan][groovy]Weaving groovy [290740] (target milestone: 1.6.7)
Full set of work items for next release
The fixes and enhancements that are in 1.6.7 development builds and those still scheduled to be completed before final release.
- Committed
- AspectJ LTW with Cobertura [279298]
(target milestone: 1.6.7) - optimizing method lookup [293620]
(target milestone: 1.6.7) - Outer class name resolution fix [288064]
(target milestone: 1.6.7) - Aspectj weaver 1.6.1 is more performant than 1.6.5 [290411]
(target milestone: 1.6.7) - For SPR-5307: adjust wild annotation patterns during resolve() [291523]
(target milestone: 1.6.7) - performance poor for call() && this() [292069]
(target milestone: 1.6.7) - variant of execution doesn't match for parameter anno [293203]
(target milestone: 1.6.7) - RuntimeException weaving roo app with advice based on execution pointcut [293351]
(target milestone: 1.6.7) - NPE on multiple declare @methods [293457]
(target milestone: 1.6.7) - typo in class BcelObjectType [295163]
(target milestone: 1.6.7) - Unhandled exception: ResolvedType.getAnnotations() should never be called [293461]
(target milestone: 1.6.7)
- AspectJ LTW with Cobertura [279298]
- Proposed
- [plan][memory][ltw]Reducing weaver memory usage over time [227484] (target milestone: 1.6.7)
- [plan] [ltw] NullPointerException at ResolvedMemberImpl.matches on ActiveMQ class. [231941] (target milestone: 1.6.7)
- [plan] [weaving] Wrong packaging of output jar file [240090] (target milestone: 1.6.7)
- [plan] [annotations] cannot aspect inner class constructor w/ annotated params [241861] (target milestone: 1.6.7)
- [plan] [matching] Incorrect ambiguity error reported for complex pointcut [243224] (target milestone: 1.6.7)
- [plan] [memory] Possible resource leak in aspectj 1.6.1 [251019] (target milestone: 1.6.7)
- [plan] [generics] Compiler fails to report name clash for generics violation via ITD [262257] (target milestone: 1.6.7)
- [plan][incremental] persistent incremental state objects [269554] (target milestone: 1.6.7)
- [plan][memory] Out of memory error when weaving [278496] (target milestone: 1.6.7)
- [plan] [model] Model not updated correctly after incremental build---ITD [280380] (target milestone: 1.6.7)
- [plan] [ataspectj] Assymetry between AfterReturning/Throwing and other advice annotation [169015] (target milestone: 1.6.7)
- [plan] [iajc] iajc run in ant script should output summary line like javac [171061] (target milestone: 1.6.7)
- [plan] [deow] declare warning change not picked up on incremental compile [176933] (target milestone: 1.6.7)
- [plan][split]JDTWorld / ReflectionWorld for matching in AJDT [265045] (target milestone: 1.6.7)
- [plan] org.aspectj.lang.reflect.Advice should give access to annotations and to parameter names [277045] (target milestone: 1.6.7)
- [plan] [annotation] param annotation matching pointcut does not always match [241847] (target milestone: 1.6.7)
- [plan] [build] Upgrade OSGi Manifest Entries to Version 2 [211768] (target milestone: 1.6.7)
Planned changes for future releases
Items planned for 1.6.8
- Proposed
- No items.
