Project Plan For AspectJ, version 1.0

Introduction

AspectJ major versions match up with Java versions. Currently Java is at 1.8 and AspectJ is about to release the 1.8 version. 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 4600). 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.

Table of Contents

Release Milestones

1.8.0M107/13/2013
AspectJ 1.8.0 milestone 1
1.7.410/25/2013
AspectJ 1.7.4 (service refresh on 1.7 line)

Table of Contents

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.8 these have the ability to compile 1.8 source code (using 1.8 features like lambda) or weave into 1.8 bytecode that is exploiting recent bytecode enhancements like invokedynamic.

Internationalization

We have bundles for many of the messages in the project but they are not translated.

Table of Contents

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.

Table of Contents

Themes and Priorities

These are the larger themes and priorities right now:

Memory Usage

Improving it across all parts of AspectJ: compilation, weaving and load-time weaving.
  • Proposed

    • [plan] [memory] reduce unnecessary garbage creation during signature processing in UnresolvedType (forName/forSignature) [431763] (target milestone: 1.8.0)

Full set of work items for next release

The fixes and enhancements that are in 1.8.0 development builds and those still scheduled to be completed before final release.
  • Committed

    • ComplianceLevel 1.8 does not enable AspectJ 5 changes [415957] (target milestone: 1.8.0)
    • "ajc -help" doesn't mention the 1.8 compliance level [430684] (target milestone: 1.8.0)
    • [plan] Java 1.8.0 problem: Can't ask to parameterize a member of non-generic type [431490] (target milestone: 1.8.0)
    • [plan] Java 1.8.0: Incorrect setup for a generic type, raw type should not point to raw [431497] (target milestone: 1.8.0)
    • [plan] NullAnnotationMatching.java:142 when compiling AspectJ 1.8.0 RC2 [431541] (target milestone: 1.8.0)
    • Update to ASM 5.0.1 [431760] (target milestone: 1.8.0)
    • Update iajc ant task to allow 1.8 compliance [431761] (target milestone: 1.8.0)
    • [plan] [performance] tweak fast match for point cut matching [431762] (target milestone: 1.8.0)
    • thisJoinPoint may not have been initialized [431976] (target milestone: 1.8.0)
    • java.lang.NoSuchMethodError: org/aspectj/runtime/internal/AroundClosure.linkClosureAndJoinPoint [432157] (target milestone: 1.8.0)
    • Concrete class percflow NoSuchMethodError: ajc$perCflowPush()V [432178] (target milestone: 1.8.0)
    • Compiler stackoverflows in ReferenceType.setDelegate [432608] (target milestone: 1.8.0)
  • Proposed

    • [plan] [memory] reduce unnecessary garbage creation during signature processing in UnresolvedType (forName/forSignature) [431763] (target milestone: 1.8.0)

Planned changes for future releases

Items planned
  • Proposed

    • [plan][performance] adjust point cut rewriting to differentiate more cases [431764] (target milestone: 1.8.1)
    • [plan] upgrade to latest Eclipse Compiler to pickup fixes [431765] (target milestone: 1.8.1)

Work completed for 1.8.0

Fixed issues, including folded in fixes from 1.7.4
  • Committed

    • configure a set of classloader for which weavers should not be created in an LTW scenario [368046] (target milestone: 1.7.4)
    • Stack trace being printed, but want to mute it [407017] (target milestone: 1.7.4)
    • Mixin Interface cannot be declared in the aspect, but needs to be in a separate class file [408014] (target milestone: 1.7.4)
    • java.util.ConcurrentModificationException when multiple threads enter the weaver [408721] (target milestone: 1.7.4)
    • A constructor added by ITD cannot invoke the method of its super class [413378] (target milestone: 1.7.4)
    • LTW not working when JMX is enabled [415266] (target milestone: 1.7.4)
    • ComplianceLevel 1.8 does not enable AspectJ 5 changes [415957] (target milestone: 1.8.0)
    • Can't introduce annotation onto introduced method from trait-patterned aspect [418129] (target milestone: 1.7.4)
    • Support additional message insert keys in declare error/warning [420210] (target milestone: 1.7.4)
    • "ajc -help" doesn't mention the 1.8 compliance level [430684] (target milestone: 1.8.0)
    • [plan] Java 1.8.0 problem: Can't ask to parameterize a member of non-generic type [431490] (target milestone: 1.8.0)
    • [plan] Java 1.8.0: Incorrect setup for a generic type, raw type should not point to raw [431497] (target milestone: 1.8.0)
    • [plan] NullAnnotationMatching.java:142 when compiling AspectJ 1.8.0 RC2 [431541] (target milestone: 1.8.0)
    • Update to ASM 5.0.1 [431760] (target milestone: 1.8.0)
    • Update iajc ant task to allow 1.8 compliance [431761] (target milestone: 1.8.0)
    • [plan] [performance] tweak fast match for point cut matching [431762] (target milestone: 1.8.0)
    • thisJoinPoint may not have been initialized [431976] (target milestone: 1.8.0)
    • java.lang.NoSuchMethodError: org/aspectj/runtime/internal/AroundClosure.linkClosureAndJoinPoint [432157] (target milestone: 1.8.0)
    • Concrete class percflow NoSuchMethodError: ajc$perCflowPush()V [432178] (target milestone: 1.8.0)
    • Compiler stackoverflows in ReferenceType.setDelegate [432608] (target milestone: 1.8.0)

Table of Contents