         © Copyright 1998-2002 Palo Alto Research Center Incorporated 2003-2008
                                             Contributors. All rights reserved.
********** CChhaannggeess iinn AAssppeeccttJJ **********
    * _1_._6_._0 (released 2008-04)
    * _1_._5_._4 (released 2007-12)
    * _1_._5_._3 (released 2006-11)
    * _1_._5_._2 (released 2006-06)
    * _1_._5_._1 (released 2006-04)
    * _1_._5_._0 (released 2005-12)
    * _1_._2_._1 (released 2004-10)
    * _1_._2 (released 2004-05)
    * _1_._1_._1 (released 2003-09)
    * 1.1.0 (released 2003-06-06) See _R_E_A_D_M_E_-_1_1_._h_t_m_l
    * _1_._0_._6 (released 2002-07-24)
          o _C_o_m_p_i_l_e_r
          o _A_J_D_E
          o _A_j_d_o_c
    * _1_._0_._5 (released 2002-06-27)
    * _1_._0_._4 (released 2002-04-17)
    * _1_._0_._3 (released 2002-02-08)
    * _1_._0_._2 (released 2002-02-06)
    * _1_._0_._1 (released 2001-12-18)
    * _1_._0_._0 (released 2001-11-30)
    * _1_._0_r_c_3 (released 2001-11-14)
    * _1_._0_r_c_2 (released 2001-10-12)
    * _1_._0_r_c_1 (released 2001-10-5)
    * _1_._0_b_e_t_a_1 (released 2001-08-29)
    * _1_._0_a_l_p_h_a_1 (released 2001-08-09)
    * _P_o_r_t_i_n_g_ _a_n_d_ _T_r_a_n_s_i_t_i_o_n
===============================================================================
********** 11..66..00 **********
This release rebases AspectJ on the Eclipse Compiler version 785_R33X - making
it Java6 compliant.
A full list of bugs fixed and enhancements implemented can be found in
_B_u_g_z_i_l_l_a.
********** 11..55..44 **********
This release contains around 40 bug fixes and enhancements since the 1.5.3
release.
A full list of bugs fixed and enhancements implemented can be found in _B_u_g_z_i_l_l_a
********** 11..55..33 **********
This release contains around 80 bug fixes and enhancements since the 1.5.2
release.
A full list of bugs fixed and enhancements implemented can be found in _B_u_g_z_i_l_l_a
********** 11..55..22 **********
This release contains around 60 bug fixes and enhancements since the 1.5.1
release.
A full list of bugs fixed and enhancements implemented can be found in _B_u_g_z_i_l_l_a
********** 11..55..11 **********
This release contains over 70 bug fixes and enhancements since the 1.5.0
release.
A full list of bugs fixed in AspectJ 5 can be found in _B_u_g_z_i_l_l_a
********** 11..55..00 **********
This release contains nearly 400 bug fixes and enhancements since the 1.2.1
release. Major updates to the language are documented in the _A_s_p_e_c_t_J_ _5
_D_e_v_e_l_o_p_e_r_'_s_ _N_o_t_e_b_o_o_k. There are also a number of enhancements to accompanying
tools documented in the _D_e_v_e_l_o_p_e_r_'_s_ _G_u_i_d_e
A full list of bugs fixed in AspectJ 5 can be found in _b_u_g_z_i_l_l_a.
********** 11..22..11 **********
All known P1 and P2 bugs have been fixed in this release. The _f_u_l_l_ _l_i_s_t_ _o_f
_f_i_x_e_s_ _a_n_d_ _e_n_h_a_n_c_e_m_e_n_t_s can be found on bugzilla. Some of the more significant
bug fixes and enhancements include:
    * _5_3_9_8_1 Any occurence of proceed(..) within the body of around advice is
      treated as the special proceed form (even if the aspect defines a method
      named proceed) unless a target other than the aspect instance is
      specified as the recipient of the call.
    * _4_8_9_9_0 Optimisations added for the special cases of if(true) and if(false)
      in pointcut expressions.
    * _6_9_3_1_9 The Eclipse JDT compiler inside AspectJ has been upgraded to the
      Eclipse 3.0 release version.
    * _6_1_5_7_2 AspectJ 1.2.1 correctly detects an attempt to access instance
      variables of the declaring aspect of an inter-type declared method from
      within the body of that method.
    * _6_5_3_1_9 Error message now correctly produced when attempting to bind a
      pointcut formal in both a this() and a target() pointcut sub-expression.
    * _7_0_6_1_9 Conflicting declare precedence statements are now handled
      gracefully.
    * _4_2_5_7_3 Relative paths specified in .lst files are now resolved relative to
      the lst file location.
    * _5_7_6_6_6 Resource copying from jar files correctly handles duplicate
      manifests.
    * _6_1_7_6_8 Static inner types of an aspect can now be referenced within the
      body of inter-type declared methods in that aspect.
    * _6_2_6_4_2 after-throwing advice on a static initialization join point no
      longer swallows ExceptionInInitializer errors.
    * _6_7_5_7_8 AspectJ 1.2.1 correctly handles privileged access to members
      defined in a different package to the privileged aspect.
    * _6_7_5_9_2 The Object[] given in response to a getArgs() call on a JoinPoint
      object is now a value copy.
    * _6_8_9_9_1 Initialisers of inter-type declared fields now have field-set join
      points.
    * _6_9_4_5_9 A static inter-type method declaration is not allowed to hide an
      instance method.
    * _7_0_7_9_4 An inter-type declaration of an abstract method on a target type
      which is an interface must be declared as public.
    * _7_1_3_7_2 Calls can be made to private static methods of enclosing types from
      the body of around advice in an inner aspect.
    * _7_1_3_7_7 Join points are now correctly detected for calls to private methods
      and set/get of private fields within the body of around advice.
    * _7_1_7_2_3 A non-privileged inter-type declared method cannot call protected
      methods defined in parent classes of the target type.
    * _7_4_2_3_8 Any privileged calls made by the AspectJ runtime library are now
      correctly wrapped in doPrivileged blocks, with fall-back implementations,
      allowing usage in restricted environments.
    * _7_4_2_4_5 Specifying the -proceedOnError flag will now cause the compiler to
      attempt weaving even in the face of errors.
    * _7_6_0_3_0 Runtime optimisations for cflow (in the case where there are no
      arguments bound in the cflow pointcut) have been implemented. This can
      dramatically speed-up some programs making heavy use of cflow. Thanks to
      the abc compiler team for detecting this performance related bug and for
      piloting the fix.
    * _5_4_4_2_1 String concatentation (using "+") is now allowed for the message
      associated with a declare error or warning statement.
    * _6_9_0_1_1 ajdoc now correctly handles types in the default package.
    * _3_6_7_4_7 The 1.2.1 compiler supports an additional option, -showWeaveInfo,
      which will produce informational messages concerning the activity of the
      weaver. For example:
           	Type 'tjp.Demo' (Demo.java:30) advised by around advice from
      'tjp.GetInfo'
              (GetInfo.java:26) [RuntimeTest=true]
    * _4_4_1_9_1 AspectJ 1.2.1 improves the error messages issued in many of the
      infamous "can't find type" scenarios.
    * _4_6_2_9_8 The code generated by ajc is now more easily digested by many
      decompilers (but you wouldn't want to do that anyway would you?? ;) ).
    * _4_9_7_4_3 Performance optimisations in the AspectJ runtime library when using
      getSignature() and toString().
    * _6_1_3_7_4 AspectJ now includes its own version of BCEL under the org.aspectj
      namespace which eliminates unwanted conflicts with BCEL versions inside
      JDKs or on classpaths in general.
    * _6_8_4_9_4 ajdoc now supports ".aj" files.
    * _7_2_1_5_4 The AspectJ 1.2.1 compiler includes the ability to dump information
      about the current state of the compiler on failure. By default this only
      happens on an abort, but it can also be forced to dump on error by
      specifying the property: org.aspectj.weaver.Dump.condition=error
    * _3_7_0_2_0 The line number locations for method execution and static
      initialization join points now give the first line of the method
      declaration (rather than the line number of the first line of code in the
      method body) when the source code is compiled by ajc.
    * _7_3_3_6_9 A new jar, aspectjweaver.jar is included in the lib directory,
      which contains the subset of aspectjtools.jar needed for weaving. The
      "aj" script is also moved into the bin directory.
********** 11..22 **********
All known P1 and P2 bugs have been fixed in this release. The _f_u_l_l_ _l_i_s_t_ _o_f
_f_i_x_e_s_ _a_n_d_ _e_n_h_a_n_c_e_m_e_n_t_s can be found on bugzilla. Some of the more significant
bug fixes and enhancements include:
    * _4_6_3_4_7 The ajc compiler now can read .class files from directories as well
      as zip files for bytecode weaving, via the new -inpath option.
    * _4_8_0_8_0 Error and warning messages emitted as a result of a declare error
      or declare warning statement now include context information that
      indicates the matched join point.
    * _5_4_8_1_9 Error and warning messages coming from the weaving phase of
      compilation now show source context wherever it is available, and also
      indicate as the source location of the error either the class file or jar
      file from which the binary source unit came.
    * _3_6_4_3_0 A new -Xreweavable option has been added which allows class files
      to be woven more than once.
    * _4_9_2_5_0 SoftException now supports getCause().
    * _5_1_3_2_0 AspectJ 1.2 now gives a compilation error if one of the non-
      statically determinable pointcut forms is used in a declare statement.
    * _5_3_0_1_2 Declaring precedence on a class type (rather than an aspect type)
      is now an error unless subtypes are included.
    * _3_6_0_6_9 The source information for inlined advice is now correct (using JSR
      45).
    * _3_4_2_0_6 (See also _4_4_5_8_7). Errors occuring during static initialisation of
      an aspect are now handled much more gracefully.
    * _4_1_9_5_2 A new Xlint warning warns users specifying declaring type patterns
      in call pointcut designators if the pointcut does not match at places
      they may expect it to.
    * _4_2_5_7_4 -extdirs opion now recognises .zip files as well as .jar.
    * _4_8_0_9_1 New option -XlazyTjp defers creation of JoinPoint objects until
      just before calling the advice body that requires them. This allows the
      cost of creating JoinPoint objects to be avoided using an if() pointcut
      test that returns false when the advice body is not required to be
      executed. Speed-ups of 10-100X are obtained via this optimisation (as
      compared to putting the test inside the advice body).
    * _4_5_4_4_1 IncompatibleClassChangeError at runtime when compiling with the -
      1.4 option.
    * _5_4_6_2_5 Incremental compilation did not support the -outjar option, but
      silently failed if it was specified. AspectJ 1.2 always performs a full
      build when the -outjar option is present.
    * _5_4_9_6_5 Incremental compilation under AspectJ 1.2 is approximately twice as
      fast as under AspectJ 1.1.1.
    * _5_5_1_3_4 Incremental compilation now deletes any additional class files
      generated during the weave phase when the class file from whence they
      came is deleted.
    * _5_4_6_2_1 Incremental compilation will now detect changes (add, delete,
      modify) to class files in directories on the inpath and will include them
      in incremental compilation.
    * _5_4_6_2_1 Incremental compilation will now detect changes to jars on the
      inpath (and injars), and trigger a full build if a jar is modified.
    * _5_4_6_2_2 Incremental compilation will now detect changes to resources on the
      inpath.
    * _5_4_6_1_8 Incremental compilation will now detect changes to any of the paths
      affecting compilation, and triggers a full build if there has been any
      change since the last build.
    * _5_0_2_0_0 The aspectjrt.jar manifest file now has the correct (upper) case.
    * _4_9_4_5_7 No error given when overloading pointcuts, unless variables are
      bound.
    * _5_0_7_7_6 Compilation failure when overriding an inter-type declared method
      with a different throws clause.
    * _5_1_9_1_9 Polymorphic inter-type declaration fails.
    * _5_2_4_6_4 Declare warning coupled with inter-type declaration causes compiler
      crash.
    * _4_1_1_2_5 Variable names in the local variable table (for debugging) are now
      correctly preserved in all cases.
    * _4_3_7_9_2 Improved support for non-US locales (and significantly boosted
      weaver performance at the same time).
    * _3_5_6_3_6 AspectJ 1.2 behaves much more gracefully when running out of
      memory. (It also requires less memory than 1.1.1 did in any case).
    * _4_2_7_1_1 Super-types of parameters not recognised when calling priveleged
      methods.
    * _4_3_9_7_2 (See also _4_5_6_7_6). Incorrectly adding synthetic attribute to
      generated methods.
    * _4_5_1_8_4 External pointcut references not resolved when a named pointcut is
      used by a declare statement.
    * _4_6_7_5_0 Declare soft does not work inside a nested aspect.
    * _4_7_7_5_4 No error signalled when attempting to declare a static method on an
      interface using an inter-type declaration.
    * _4_8_5_2_2 Declare soft softens all exceptions at matched join points, not
      just the exception declared to be soft.
    * _4_9_2_9_5 AspectJ 1.2 no longer supports inter-type constructor declarations
      on interfaces.
    * _5_1_9_2_9 Call to a protected super-type method within a advice body causes
      java.lang.VerifyError.
    * _5_2_9_2_8 Private members introduced via an interface are incorrectly visible
      within implementing classes.
    * _4_7_9_1_0 An output jar file created by AspectJ when using the -outjar option
      does not contain a valid manifest file.
    * _5_9_9_0_9 Thread local storage used to manage cflow stacks when available -
      improves cflow performance when working with a multi-threaded
      application.
********** 11..11..11 **********
All known P1 and P2 bugs have been fixed in this release. The _f_u_l_l_ _l_i_s_t_ _o_f_ _b_u_g
_f_i_x_e_s (49 in all) can be found on bugzilla.
Some of the more significant bug fixes and enhancements in this release
include:
    * _4_0_9_4_3 The ajc compiler now copies resource files from jars specified
      using the -injars option. When compiling with source directories,
      resources are not copied - mirroring the behaviour of javac so as to
      cause minimum disruption when switching between ajc and javac. (To copy
      resources from source directories, use the iajc Ant task
      sourceRootCopyFilter option.) Thanks to Matthew Webster for contributing
      many of the patches for this enhancement.
    * _3_9_6_2_6 ajc was erroneously putting aspectjtools.jar in the classpath of a
      compilation. This caused problems when attempting to compile projects
      using different versions of any of the classes in aspectjtools.jar.
      Thanks to George Harley and Igor Hjelmstrom Vinhas Ribeiro for their
      assistance in tracking this down.
    * _4_0_2_5_7 Relative paths are now supported in ".lst" files.
    * _4_0_7_7_1 The Ajde apis are no longer coupled to swing. This is of most
      significance to AJDT users on the Mac OS X platform, enabling AJDT to be
      used with Mac OS X.
    * _4_1_2_5_4 Of interest to those writing tools that need to interact with the
      structure model for AspectJ programs: the interface to the AspectJ
      structure model was significantly revised and enhanced in 1.1.1.
    * _3_9_4_6_2 A compiler exception was thrown when an abstract aspect in a
      library was extended by a concrete aspect using cflow. Thanks to Takao
      Naguchi for an easy to reproduce bug report.
    * _3_9_4_7_9 Compiler crashes when a constructor delegates to another
      constructor that uses a switch statement. Thanks to Andy Clement for both
      the easy to reproduce bug report and the patch.
    * _4_1_1_7_5 Declared exceptions were being lost on inter-type declarations made
      from binary aspects in an aspect library.
    * _4_1_3_5_9 Aspect per-clauses were not inherited by sub-aspects when using
      binary aspect libraries. Thanks to Chris Bozic for the easy to reproduce
      bug report.
    * _4_2_5_3_9 The "+" pattern was being ignored for type patterns used in throws
      clauses. Thanks to Keith Sader for the easy to reproduce bug report.
    * _4_0_8_0_7 If you specify no output directory, the iajc Ant task now defaults
      to using the source directory, following ajc and javac. As a result, now
      you can use ajc to compile JSP's in Tomcat. Thanks to Ron Bodkin for
      investigating how to integrate ajc with Tomcat.
********** 11..00..66 **********
This release contains mainly bug fixes for ajde and ajdoc.
******** CCoommppiilleerr ********
We fixed a bug with switch statements, thanks largely to Jason Rimmer's
diligence in helping us isolate the problem. Also, to help Log4J parse stack
traces, we changed class file symbolic line references to use [] instead of ()
for the virtual start lines of each file.
******** AAJJDDEE ********
AAJJDDEE FFrraammeewwoorrkk,, AAJJBBrroowwsseerr,, aanndd AAJJDDEE ffoorr FFoorrttee//NNeettBBeeaannss
The memory use of the structure model has been streamlined in order to reduce
footprint when working with large systems.  Error tolerance has also been
improved for dealing with a structure model that is out of synch with resources
on disk.
****** AAJJDDEE ffoorr JJBBuuiillddeerr ******
JBuilder 7 is now supported.  All known bugs have been fixed including:
    * _7_8_7 AJDE for JBuilder throws exception given non-existent file
    * _7_8_8 Label too small in error message
    * _7_8_9 Index-out-of-bounds exception in JBuilder AJDE
    * _7_9_2 Required libraries disappear from JBuilder 6
    * _7_9_5 Unable to compile open tools
    * _8_0_2 AJDE loses current (cursor) position in file when switching files
In addition, thanks to user feedback that indicated trouble building JBuilder
OpenTools with AJDE/JBuilder, the OpenTool is now being built with itself.
******** AAjjddoocc ********
    * Fixed _7_9_0 aspect code comments suppressed by fix to bug 710
    * Known problems: _h_t_t_p_:_/_/_a_s_p_e_c_t_j_._o_r_g_/_b_u_g_s_/_a_j_d_o_c
===============================================================================
********** 11..00..55 **********
This release includes significant improvements to AspectJ Development
Environment (AJDE) support. The entire user interface has been revised and
streamlined. The AJDE features are more tightly integrated into JBuilder and
NetBeans/Forte support. JBuilder support now includes graphical configuration
file editing and an integrated AspectJ Browser tool.
    * _C_o_m_p_i_l_e_r
    * _A_J_D_E
    * _A_j_d_o_c
    * _A_n_t_ _t_a_s_k_s
******** CCoommppiilleerr ********
This was another compiler release primarily concerned with fixing corner cases
in the language implementation. Our handling of nested classes, the assert
statement, and cflow were the principal offenders this time. Thanks to Nicholas
Alex Leidenfrost and Patrick Chan for their clear and concise bug reports on
some of these issues.
******** AAJJDDEE ********
****** TThhiiss rreelleeaassee iinncclluuddeess ssiiggnniiffiiccaanntt iimmpprroovveemmeennttss ttoo AAssppeeccttJJ DDeevveellooppmmeenntt
EEnnvviirroonnmmeenntt ((AAJJDDEE)) ssuuppppoorrtt.. AAllll kknnoowwnn bbuuggss hhaavvee bbeeeenn ffiixxeedd,, aanndd tthhee ccoorree
ffrraammeewwoorrkk qquuaalliittyy hhaass bbeeeenn ssiiggnniiffiiccaannttllyy iinnccrreeaasseedd tthhaannkkss ttoo tthhee aaddooppttiioonn ooff aa
uunniitt tteesstt ssuuiittee.. TThhee ffoolllloowwiinngg cchhaannggeess aappppllyy ttoo aallll ooff tthhee AAJJDDEE NNeettBBeeaannss//FFoorrttee,,
JJBBuuiillddeerr,, aanndd tthhee AAssppeeccttJJ BBrroowwsseerr ssuuppppoorrtt.. NNeettBBeeaannss//FFoorrttee aanndd JJBBuuiillddeerr--ssppeecciiffiicc
cchhaannggeess aarree lliisstteedd bbeellooww.. ******
    * The entire user interface has been revised and streamlined.
    * The structure view and browser have a new UI, and offer both a file-based
      and global structure views. All views expose node ordering, node
      filtering, and association filtering functionality. The global views
      expose a package tree as well as the global inheritance and crosscutting
      structure.
    * Structure view navigation now has a history exposed by back/forward.
    * The is a new build configuration management UI.
    * The compiler preferences UI now includes access to all build options.
    * Error messages have been improved, and the structure views include
      annotations of nodes with errors and warnings.
****** AAJJDDEE ffoorr JJBBuuiillddeerr ******
Integration into the JBuilder IDE is more streamlined. In addition:
    * The AspectJ Browser is included as a tool that replaces JBuilder's
      "Project View" and can be used to navigate the global structure of your
      system (including the crosscutting and inheritance structure).
    * Inline structure annotations in the editor's gutter can now expose all of
      the structure presented in the structure view, and can be used to
      navigate in a similar way. Note that there are preferences for toggling
      which of these appear.
    * Building is better integrated and the JBuilder build toolbar is removed
      when AJDE is enabled.
    * Build configurations can be selected from the build button's menu.
    * Execution is better integrated: instead of a separate "run" button
      JBuilder's run and debug can be used. Note that for new projects you will
      need to use the "AspectJ Runtime" library, which will be added to your
      preferences automatically.
    * A new graphical build configuration editor can be used by double-clicking
      ".lst" files that have been added to the project.
    * Error messages now match JBuilder's look-and-feel and behavior. Seeking
      to column numbers now works in addition to line numbers.
****** AAJJDDEE ffoorr FFoorrttee//NNeettBBeeaannss ******
Integration into the NetBeans IDE is more streamlined. In addition:
    * NetBeans 3.3.2 and SunONE Studio 4 are supported.
    * Multiple filesystems are supported.
    * Default project build configurations (all project files) are now
      supported.
    * Build configurations can be selected in the tool bar.
    * Regular NetBeans execution and debugging is supported. Note that you have
      to add netbeans/lib/ext/aspectjrt.jar file to your project configuration.
    * Class files are generated beside source files (NetBeans/javac default).
      There is currently no way to specify a target directory.
****** AAJJBBrroowwsseerr ******
    * The browser now supports main class execution. Set the main class in the
      options dialog, and make sure that both the Java executable is on your
      path, and the class that you expect to execute on your classpath.
    * The error messages UI has been improved.
******** AAjjddoocc ********
Bug fixes:
    * _7_1_0_ _-_ _c_o_m_p_i_l_e_r_-_g_e_n_e_r_a_t_e_d_ _c_o_n_s_t_r_u_c_t_o_r_ _s_h_o_w_n_ _w_i_t_h_ _c_l_a_s_s_ _c_o_m_m_e_n_t
    * _7_1_2_ _-_ _c_o_m_m_e_n_t_s_ _l_o_s_t_ _i_n_ _a_s_p_e_c_t_ _d_o_c_s_ _f_o_r_ _m_e_t_h_o_d_s_ _o_r_ _c_o_n_s_t_r_u_c_t_o_r_s_ _d_e_c_l_a_r_e_d
      _o_n_ _o_t_h_e_r_ _t_y_p_e_s_.
    * _7_1_9_ _-_ _p_o_o_r_ _s_u_p_p_o_r_t_ _f_o_r_ _@_l_i_n_k_,_ _@_s_e_e_ _t_a_g_s
    * _7_4_2_ _-_ _c_r_a_s_h_ _w_i_t_h_ _@_s_e_e_ _t_a_g
    * _7_5_1_ _-_ _e_r_r_o_r_ _l_o_a_d_i_n_g_ _d_o_c_l_e_t_ _r_e_s_o_u_r_c_e
******** AAnntt ttaasskkss ********
Bug fixes:
    * _7_3_0_ _-_ _d_o_c_u_m_e_n_t_ _a_l_l_ _s_u_p_p_o_r_t_e_d_ _a_j_c_ _f_l_a_g_s
===============================================================================
********** 11..00..44 **********
    * _C_o_m_p_i_l_e_r
    * _A_J_D_E
    * _A_j_d_o_c
    * _A_n_t_ _t_a_s_k_d_e_f_s
    * _D_o_c_u_m_e_n_t_a_t_i_o_n
******** CCoommppiilleerr ********
    * Over a dozen people independently reported a bug in error handling for
      the wrong number number of arguments to proceed. This has been turned
      into a nice error message. A number of other bug reports related to
      around advice and proceed have also been fixed, including the ability to
      change the bindings for this and target using proceed in around advice.
    * David Walend gets the bbllaacckk tthhuummbb award for the most bug reports
      submitted by a new user. His bug report on the behavior of after
      returning advice led to some valuable clarifications of this part of the
      language spec.
    * A number of places where ajc didn't fully comply with the Java Language
      Spec have been fixed in this release. Thanks to Neal Gafter for reporting
      many of these.
****** IInnccoommppaattiibbllee cchhaannggeess ******
Two potentially surprising incompatible changes have been made to ajc in order
to bring the compiler into compliance with the 1.0 language design. These
changes will be signalled by clear warning or error messages at compile-time
and will not cause any run-time surprises. We expect most users to never notice
these changes.
    * The obsolete class org.aspectj.lang.MultipleAspectsBoundException has
      been removed from aspectjrt.jar. This class had not been used since
      AspectJ-0.8 and should have been removed prior to the 1.0 release. It is
      not documented as part of the 1.0 language spec. This change will cause a
      compile-time type not found error in any code that refers to this
      exception.
The compiler was not correctly implementing the AspectJ-1.0 language design for
some uses of after returning advice. This compiler behavior was fixed, and
advice whose behavior might be changed by this bug fix will be highlighted with
a compiler warning. More information about some of these changes can be found
in the _p_o_r_t_i_n_g_ _n_o_t_e_s.
******** AAJJDDEE ********
This is the first release of AJDE support with significant external
contribution. A big thanks goes out to Phil Sager for porting the AJDE for
Forte/NetBeans support to NetBeans 3.3.1 and improving the integration into
NetBeans.
****** AAJJDDEE ffoorr JJBBuuiillddeerr ******
    * Updates
          o This is a bug fix release only.
****** AAJJDDEE ffoorr FFoorrttee//NNeettBBeeaannss ******
    * Updates
          o NetBeans 3.3.1 is now supported in addition to NetBeans 3.2 and
            Forte CE 3.
          o Native NetBeans main class execution can now be used. After doing a
            "Compile with AJC" browse to the main class in the "Filesystems"
            Explorer, right-click the class and select "Execute".
          o The debugger can now be used if the project main class is set
            ("Project" menu -> "Set Project Main Class...").
          o Numerous bugs have been fixed.
    * Known limitations
          o Breakpoint setting does not work in the debugger.
          o In the "Filesystems" Explorer red Xs appear on files with AspectJ
            source code. The "AspectJ" Explorer understands the structure of
            AspectJ projects and should be used for navigating structure
            instead.
****** AAJJDDEE ffoorr EEmmaaccss ******
    * This is a bug fix release only.
******** AAjjddoocc ********
Ajdoc now runs under J2SE 1.4, but still requires the tools.jar from J2SE 1.3
be on the classpath.
******** AAnntt ttaasskkss ********
    * Repackaged to fit into the AspectJ product directory - e.g., aspectj-
      ant.jar moved to lib as expected by examples/build.xml.
    * Fixed bugs, esp. _6_8_2: Throw BuildException if failonerror and ajdoc
      detects misconfiguration.
******** DDooccuummeennttaattiioonn ********
Added a 1-page quick reference guide. Improved javadoc documentation for the
org.aspectj.lang package.
===============================================================================
********** 11..00..33 **********
    * _C_o_m_p_i_l_e_r
    * _A_n_t_ _t_a_s_k_d_e_f_s
******** CCoommppiilleerr ********
This release fixes a single significant bug in 1.0.2 where ajc could generate
unreachable code in -usejavac or -preprocess mode. This would happen when
around advice was placed on void methods whose body consisted solely of a while
(true) {} loop. We now properly handle the flow-analysis for this case and
generate code that is acceptable to javac. Thanks to Rich Price for reporting
this bug.
******** AAnntt ttaasskkddeeffss ********
Added support to the Ajc taskdef for the -source 1.4 and -X options generally.
===============================================================================
********** 11..00..22 **********
This release is mainly about keeping up with the Joneses. To keep up with SUN's
release candidate for J2SE1.4, we now officially support the new 1.4 assertions
and running on the 1.4 VM. In honor of the public review of JSR-45 Debugging
Support for Other Languages we implement this spec for AspectJ. We support
Borland's recent release of JBuilder 6, and since some of our users are
starting to work on Mac OSX, AJDE now works nicely on this platform. We also
fixed almost all of the bugs you reported in 1.0.1.
    * _C_o_m_p_i_l_e_r
    * _A_J_D_E
    * _A_J_D_B
******** CCoommppiilleerr ********
    * Official support for -source 1.4 option to compile new _1_._4_ _a_s_s_e_r_t_i_o_n_s.
      This makes ajc completely compatible with j2se-1.4.
    * Implementation of _J_S_R_-_4_5_ _D_e_b_u_g_g_i_n_g_ _S_u_p_p_o_r_t_ _f_o_r_ _O_t_h_e_r_ _L_a_n_g_u_a_g_e_s so that
      debuggers which correctly implement this specification will be able to
      accurately debug any AspectJ program at a source code level. We are not
      currently aware of any debuggers that implement this so far, but expect
      that as j2se-1.4 becomes widely available this will change.
    * As proposed by Arno Schmidmeier and seconded by Nick Lesiecki, we now
      have an experimental -Xlint option that will provide warnings when type
      patterns used in pcds have no bindings. We are very interested in
      feedback on the usefulness and suggested improvements for this feature.
    * Several significant bugs in the implementation of around advice have been
      fixed. These include issues with _d_y_n_a_m_i_c_ _t_e_s_t_s, with _c_o_m_p_l_i_c_a_t_e_d_ _l_o_c_a_l
      _t_y_p_e_s_ _i_n_ _a_n_ _a_r_o_u_n_d_ _b_o_d_y, and with _c_a_p_t_u_r_i_n_g_ _p_r_o_c_e_e_d_ _i_n_ _a_ _c_l_o_s_u_r_e.
    * All but two (_1, _2) verified bugs in 1.0.1 have been fixed. The two
      outstanding bugs have relatively easy work-arounds. Thanks as usual to
      everyone who submitted a bug report.
    * We no longer use the SYNTHETIC attribute to label declarations added by
      the aspectj compiler. We were using this attribute in compliance with _t_h_e
      _J_V_M_ _S_p_e_c_i_f_i_c_a_t_i_o_n; however, we've found that many tools expect this
      attribute to only be used for the narrow purpose of implementing Java's
      inner classes and that using it for other synthetic members can confuse
      them. This led to problems both _w_i_t_h_ _j_a_v_a_p and _w_i_t_h_ _j_a_v_a_c.
    * Changes required adding runtime classes, so please compile and run using
      the latest aspectjrt.jar
******** AAJJDDEE ********
This is a bug fix release only.
    * Thanks to Dave Yost and Matt Drance for submitting the AJDE patches for
      Mac OSX (context popup menus and keyboard shortcuts did not work).
    * Bugs in history navigation (back-forward buttons in the structure view)
      have been fixed.
    * "Declares" are now handled properly in the structure view.
    * Other GUI and usability improvements have been made the AspectJ Browser
      and core framework.
****** AAJJDDEE ffoorr JJBBuuiillddeerr ******
    * Support has been extended to JBuilder 6, and support for Enterprise
      version features has been improved.
    * Fixed bug causing inline source code annotations in the editor pane to
      not be updated after a recompile.
    * Keyboard shortcuts were fixed to work with Mac OSX.
****** AAJJDDEE ffoorr FFoorrttee ******
    * Keyboard shortcuts were fixed to work with Mac OSX.
****** AAJJDDBB ******
Some minor bug fixes, but this is still early-access software. Please try using
another JPDA-compliant debugger. If it uses JDI correctly, then it should
navigate to line numbers when the classes are run under J2SE1.4, based on the
new JSR-45 debugging support described above. We would appreciate any reports
of success or failure.
===============================================================================
********** 11..00..11 **********
    * _C_o_m_p_i_l_e_r
    * _A_J_D_E
    * _A_J_D_B
******** CCoommppiilleerr ********
This release fixes a significant performance issue in the compiler, reported by
Rich Price, that could lead to extremely long compiles in systems with many
aspects and classes. Several other small bugs related to reporting compilation
errors have also been fixed, see _t_h_i_s_ _b_u_g_ _r_e_p_o_r_t for an example.
A new experimental flag has been added, -XaddSafePrefix, that will cause the
prefix aspectj$ to be inserted in front of all methods generated by ajc. This
mode should be helpful when using aspectj with tools that do reflection based
on method names, such as EJB tools. Thanks to Vincent Massol for pointing out
the importance of this. It is expected that this prefix will either become the
default compiler behavior in the future or a non-experimental flag will replace
it.
******** AAJJDDEE ********
Minor bug fixes, including: AJDE for JBuilder failed to preserve application
parameters from project settings when executing the application.
Source builds were cleaned up for JBuilder and Forte sources.
******** AAJJDDBB ********
Two bugs were reported and have been fixed in this release. (Note that ajdb is
still considered early-access software.)
    * bug 611: NullPointerException dumping non-primitive values
    * bug 617: -X and -D options not passed to debug VM correctly
********** 11..00..00 **********
    * _L_a_n_g_u_a_g_e
    * _C_o_m_p_i_l_e_r
    * _A_J_D_E
    * _A_J_D_o_c
    * _A_n_t_ _t_a_s_k_d_e_f_s
********** LLaanngguuaaggee **********
There were no language changes for this release.
********** CCoommppiilleerr **********
Several minor bugs primarily in error handling were reported and have been
fixed in this release. The two most serious bugs are described below:
    * Niall Smart and Stephan Schmidt reported related bugs (variants of which
      are also produced by other compilers) that caused verify errors when
      dealing with nested try-finally and synchronized statements. These are
      now fixed. More details are available _h_e_r_e and _h_e_r_e
    * Jan Hannemann submitted a _s_u_c_c_i_n_t_ _a_n_d_ _c_l_e_a_r_ _b_u_g_ _r_e_p_o_r_t for a difficult
      intermittant bug. The bug led to the compiler sometimes generating
      illegal code when introduced methods on a class overrode introduced
      methods on an interface implemented by that class. This is now fixed.
********** AAJJDDEE **********
Numerous user interface refinements were made to the browser and core AJDE
functionality. Error handling and reporting has been improved. All of the AJDE
tools now support the ".aj" file extension.
****** AAJJDDEE ffoorr JJBBuuiillddeerr ******
    * The AspectJ Browser now uses JBuilder's icons and distinguishes nodes by
      visibility.
    * Project-setting VM parameters are now supported by the "AJDE Run" button.
****** AAJJDDEE ffoorr FFoorrttee ******
    * The AspectJ Browser now uses Forte's icons and distinguishes nodes by
      visibility
****** AAJJBBrroowwsseerr ******
    * Documentation for the browser is now available at _h_t_t_p_:_/_/_a_s_p_e_c_t_j_._o_r_g_/_d_o_c_s
****** EEmmaaccss SSuuppppoorrtt:: aassppeeccttjj--mmooddee aanndd AAJJDDEEEE ******
    * Improved updating of annotations during editing.
    * Pop-up jump menu now placed (with mouse pointer) near cursor.
    * [AJDEE only] Improved filtering of legal code completions.
****** AAJJDDoocc ******
    * Runs only in J2SE 1.3 - not 1.2 or 1.4. You can document 1.x-reliant
      programs by using the options to compile using 1.x libraries.
    * Disabled some non-functioning options, documented as unsupported in the
      syntax message.
****** AAnntt ttaasskkddeeffss ******
    * Fork is not supported in the AJDoc taskdef
********** 11..00rrcc33 **********
********** LLaanngguuaaggee **********
There have been several minor clarifications/changes to the language.
    * Thanks to Robin Green for suggesting that we could relax the rules for
      inheriting multiple concrete members in order to allow those unambiguous
      cases where one member has already overridden the other. _M_o_r_e_ _d_e_t_a_i_l_s_._._.
    * Ron Bodkin encouraged us to examine the details of privileged aspects
      more closely. This led to several small improvements and clarifications
      to this language feature. _M_o_r_e_ _d_e_t_a_i_l_s_._._.
********** CCoommppiilleerr **********
This release saw several changes to the compiler in order to work-around known
bugs in different JVMs, or to otherwise mimic the behavior of javac rather than
necessarily following the Java Language Specification.
    * Hanson Char reported a bug where ajc's correctly generated bytecodes for
      some references to interface fields result in verify errors on certain
      JVMs. While this is a known bug in those JVMs, we've modified ajc to be
      bug compatible with all the other Java compilers out there to work-around
      this JVM bug. _M_o_r_e_ _d_e_t_a_i_l_s_._._.
    * Frank Hunleth discovered a similar bug where ajc's correct bytecodes
      could lead to essentially random method dispath due to a bad bug in the
      1.3.0 JVM from Sun. Even though this bug was fixed in the 1.3.1 and 1.2.2
      JVMs, we have introduced the appropriate work-around in ajc's code
      generation. _M_o_r_e_ _d_e_t_a_i_l_s_._._.
    * Thomas Haug (as well as several other members of his group) reported a
      problem with name binding where ajc was behaving differently than javac.
      This problem was resolved to come from a class created by an obfuscator
      that conflicted with his package names. The JLS doesn't clearly specify
      which of these two behaviors is correct. Nevertheless, ajc has been
      changed to treat packages more like javac does in order to minimize this
      sort of problem in the future. _M_o_r_e_ _d_e_t_a_i_l_s_._._.
    * Several "real" bugs in ajc were also reported and fixed. Toby Allsopp
      gets credit for reporting two of them. The most interesting of these bugs
      to me was his report that we just didn't support qualified anonymous
      inner constructors. This is a part of the Java language that ajc has
      never supported over its almost 3 year history. We'd just noticed this
      ourselves when running the jacks compiler test suite from the jikes
      group, and had added the feature days before getting our first bug report
      for it not being there.
********** AAJJDDEE **********
    * The structure view has been improved.
    * Multiple user-configurable views are supported.
    * Structure tree filtering and ordering has been added.
    * A split tree mode has been added to permit the navigation of multiple
      views on the same structure.
    * The view can also be toggled between a file-based and a system-based mode
      which determines whether the root of the structure tree is the current
      file or the project root.
    * The signatures of tree nodes have been improved and several new node
      associations are now navigable.
    * A depth slider for controlling tree-expansion has been added.
****** AAJJDDEE ffoorr JJBBuuiillddeerr ******
    * Changes:
    * Inline annotations support have been improved and made consistent with
      the structure tree (annotations only show up for intra-declaration
      structure).
    * The current structure view persists across IDE launches.
    * An enabled AJDE no longer slows down JBuilder shutdown.
****** AAJJDDEE ffoorr FFoorrttee ******
    * Execution remembers main class.
    * The bug causing an error during a "Mode" and "Explorer" switch has been
      fixed.
****** AAJJBBrroowwsseerr ******
    * AJBrowser is currently an undocumented demonstration application. To use
      it type: ajbrowser <lst file1> <lst file2> ...
    * Multiple source locations can be shown by selecting multiple nodes and
      right-clicking to select the "Display Sources" command.
****** EEmmaaccss SSuuppppoorrtt:: aassppeeccttjj--mmooddee aanndd AAJJDDEEEE ******
    * Numerous jump-menu improvements, including operation of pop-ups.
    * For AJDEE, compatibility with JDEE 2.2.9beta4. Also, fixes in completion,
      ajdoc launch, and speedbar.
******** AAJJDDoocc ********
Some of the more obvious NullPointerException bugs in Ajdoc were fixed, but
Ajdoc does not implement all the functionality of Javadoc and has some bugs:
    * Split indexes do not work correctly
    * Inner classes are not listed in indexes
    * Synthetic methods are documented
    * There is no package frame even when packages are specified on the command
      line
    * -group option is not implemented
    * -use targets are not all calculated correctly
    * Exception information may not be printed for the @throws tag
    * Verbose output should go to stderr, not stdout
    * Extra links are generated (should be unlinked text)
Further, Ajdoc has not been testing on variants of the J2SE (it uses javadoc
classes).
******** AAnntt ttaasskkddeeffss ********
The Ajc taskdef was updated to support the new compiler options and the .aj
extension, and some NullPointerException bugs were fixed (thanks to Vincent
Massol for a bug report listing the line number of the fix). The AJDoc cannot
be run repeatedly in a single Ant run, and has trouble loading the doclet
unless the libraries are installed in ${ant.home}/lib.
===============================================================================
********** 11..00rrcc22 **********
    * _L_a_n_g_u_a_g_e
    * _C_o_m_p_i_l_e_r
    * _A_J_D_E
********** LLaanngguuaaggee **********
There are no language changes in this release. This is a bug fix release only.
********** CCoommppiilleerr **********
A bug in handling inner type names that conflict with enclosing type names was
fixed. Many error messages were improved.
********** AAJJDDEE **********
    * This is a bug fix release only.
****** AAJJDDEE ffoorr JJBBuuiillddeerr ******
    * Changes:
          o Fixed bug causing the output path to be ignored and .class files to
            be generated into the JBuilder install's "bin" directory.
          o Fixed bugs in Browser listener causing NullPointerExceptions to be
            thrown if no node editor was present.
          o Fixed bug permitting "-bcg" option to be passed to the compiler.
          o Fixed bug preventing ajc from compiling all of the project source
            files when automatic package discovery was on (JBuilder
            Proffessional and Enterprise editions).
          o If the "-preprocess" flag is used resulting source files will be
            placed in the project's "Working directory".
    * Limitations:
          o "Automatic package discovery" mode is not supported in this
            release.
          o The debugger has not seen much use and it's stability and
            performance is limited.
****** AAJJDDEE ffoorr FFoorrttee ******
    * Changes:
          o Moved the "AspectJ" menu into the "Tools" menu in order to make it
            less intrusive.
          o Added a "ctrl-alt-shift-F9" keyboard compile shortcut.
    * Limitations:
          o Known bug: "Mode" switching is not supported in this version--you
            must do all of your AspectJ work in the "Editing" mode. If you
            switch modes the IDE has to be restarted for the AspectJ window to
            show again. Switching to a different tab in the ProjectExplorer has
            the same effect.
          o The debugger has not seen much use and it's stability and
            performance is limited.
****** AAJJBBrroowwsseerr ******
    * Changes:
          o ...
    * Limitations:
          o AJBrowser is currently an undocumented demonstration application.
            To use it type:
            > ajbrowser <lst file1> <lst file2> ...
****** EEmmaaccss SSuuppppoorrtt:: aassppeeccttjj--mmooddee aanndd AAJJDDEEEE ******
This release now properly displays annotations for call sites and
introductions. Robustness has been improved in several dimensions, including
performance at startup. The compile menu now recomputes properly when changing
directories.
===============================================================================
********** 11..00rrcc11 **********
    * _L_a_n_g_u_a_g_e
    * _C_o_m_p_i_l_e_r
    * _A_J_D_E
********** LLaanngguuaaggee **********
Some of the details of the specification for perthis and pertarget have
changed. These changes make these language constructs implementable on current
JVMs without memory leaks (this wasn't true of the previous version). Most
people will probably not notice these changes, but the correct semantics are
described in _t_h_e_ _s_e_m_a_n_t_i_c_s_ _s_e_c_t_i_o_n_ _o_f_ _t_h_e_ _p_r_o_g_r_a_m_m_i_n_g_ _g_u_i_d_e.
In a related change, aspects are not allowed to implement either the
java.io.Serializable or the java.lang.Cloneable interface. It is unclear what
the correct behavior of a system should be when an aspect is serialized or
cloned, and rather than make an arbitrary choice right now we've chosen to
leave the most room to design them right in a future release.
********** CCoommppiilleerr **********
ajc now directly generates .class files without using javac as a back-end. This
should result in improved compiler performance, better error messages and
better stack-traces and debugging info in those .class files. -preprocess mode
is still available for those who want to generate legal Java source code and a
new -usejavac mode is available if you have a requirement to continue to use
javac as a back-end.
ajc now officially supports source files with the .aj extension. We plan to
extend this support to the rest of our tools as time permits.
This release of ajc includes support for the "-source 1.4" option that enables
the new 'assert' keyword in jdk1.4. This option only works correctly when
compiling against the jdk1.4 libraries. In addition, this release of ajc will
run under SUN's jdk1.4beta2. However, we still strongly recommend that most
users use the non-beta jdk1.3.
********** AAJJDDEE **********
    * The structure view can now be configured (using the "Options" dialog) to
      display different kinds of associations between program elements that
      appear in the tree.
    * Structure view history navigation has been added.
    * When navigating links the structure view will stay synchronized with the
      editor.
****** AAJJDDEE ffoorr JJBBuuiillddeerr ******
    * Changes:
          o Inline structural navigation annotations appear in the gutter of
            the editor and can be used to navigate associations such as advice
            and introduction.
    * Limitations:
          o "Automatic package discovery" mode is not supported in this
            release.
          o The debugger has not seen much use and it's stability and
            performance is limited.
****** AAJJDDEE ffoorr FFoorrttee ******
    * Changes:
          o Support for Forte 3 and Netbeans 3.2 has been added.
          o The module is now installed by default on the first use without
            having to go to the IDE options to enable it.
    * Limitations:
          o Known bug: "Mode" switching is not supported in this version--you
            must do all of your AspectJ work in the "Editing" mode. If you
            switch modes the IDE has to be restarted for the AspectJ window to
            show again. Switching to a different tab in the ProjectExplorer has
            the same effect.
          o The debugger has not seen much use and it's stability and
            performance is limited.
****** AAJJBBrroowwsseerr ******
    * Changes:
          o Build configuration file editor added.
    * Limitations:
          o AJBrowser is currently an undocumented demonstration application.
            To use it type:
            > ajbrowser <lst file1> <lst file2> ...
****** AAssppeeccttjj--mmooddee aanndd AAJJDDEEEE:: AAssppeeccttJJ ssuuppppoorrtt iinn EEmmaaccss ******
This release of AspectJ support for Emacs includes corrections to the
documentation and the appearance of annotations and jumps in the editing view.
Also, advice are now shown on non-declarations, when appropriate, such as call
advice. The internal event model has been revised to reduce computational
overhead.
===============================================================================
********** 11..00bbeettaa11 **********
    * _L_a_n_g_u_a_g_e
    * _C_o_m_p_i_l_e_r
    * _A_J_B_r_o_w_s_e_r
    * _A_J_D_E
********** LLaanngguuaaggee **********
There is one language change since 1.0alpha1. The static modifier is no longer
needed or allowed on pointcut declarations. Name binding for pointcut
declarations works like class methods now. Thanks to Robin Green for
encouraging us to look at this one last time.
The current implementation of perthis/pertarget has the possibility of memory
leaks (thanks to Arno Schmidmeier for pointing this out). The design of this
part of the language will almost certainly see some changes in the next release
to address issues of implementability on the JVM as well as related issues.
********** CCoommppiilleerr **********
The ajc compiler should now catch all errors in source code and you should no
longer see errors coming from files in 'ajworkingdir'. Please report any errors
in 'ajworkingdir' as bugs.
All reported bugs in 1.0alpha1 have been fixed. Thanks to everyone for your bug
reports. Most notably, the 'if' pcd that was added in 1.0alpha1 should work
correctly in this release. Thanks to Morgan Deters for a very thorough bug
report on this broken feature days after the 1.0alpha1 release.
********** AAJJBBrroowwsseerr **********
    * Support for executing classes has been added.
    * .lst can now be passed as arguments on the command line.
    * Compiler options can be set.
    * Know limitations:
          o In order to execute classes they must be available on the classpath
            that the browser is launched with.
********** AAJJDDEE **********
    * The performance and UI of the structure tree has been improved.
    * Compilation now runs in a separate thread and a progress monitor is
      updated during the compile.
    * The structure view now persists across IDE launches.
    * Limitations:
          o If an error occurs in the javac pass it will not display properly
            in the error messages pane. To view the error you have check the
            output of the console that the IDE was launched from. No more
            errors should be passed to javac, so please report this behavior
            and the corresponding error message as a bug.
****** AAJJDDEE ffoorr JJBBuuiillddeerr ******
    * Known bugs have been fixed.
    * Classpath separator character is no longer hardcoded.
    * Keyboard shortcuts for compilation (ctrl-F11) and execution (ctrl-F12)
      have been added.
    * Limitations:
          o The debugger has not seen much use and it's stability and
            performance is limited.
****** AAJJDDEE ffoorr FFoorrttee ******
    * Known bugs have been fixed.
    * Limitations:
          o "Mode" switching is not supported in this version--you must do all
            of your AspectJ work in the "Editing" mode. If you switch modes the
            IDE has to be restarted for the AspectJ window to show again.
          o There are no keyboard compile/execute shortcuts.
          o The debugger has not seen much use and it's stability and
            performance is limited.
****** AAssppeeccttjj--mmooddee aanndd AAJJDDEEEE:: AAssppeeccttJJ ssuuppppoorrtt iinn EEmmaaccss ******
AspectJ Development Environment for Emacs has been split into two pieces,
aspectj-mode (an extension of java-mode), and AJDEE (an extension of JDE).
Additionally, a switch, -emacssym, has been added to ajc that generates AspectJ
declarations information directly, thus beanshell is no longer required for use
of these modes.
===============================================================================
********** 11..00aallpphhaa11 **********
This is the first alpha release of the 1.0 language and tools. There have been
many changes in the language, and many improvements to the tools. We wish to
thank our users for putting up with the high volatility of AspectJ in the push
to 1.0.
    * _L_a_n_g_u_a_g_e
    * _C_o_m_p_i_l_e_r
    * _D_o_c_u_m_e_n_t_a_t_i_o_n
    * _A_J_D_o_c
    * _A_n_t
    * _A_J_B_r_o_w_s_e_r
    * _A_J_D_E
******** LLaanngguuaaggee ********
There have been many changes to make the 1.0 language both simpler and more
powerful. User feedback has driven most of these design changes. Each email
we've received either making a suggestion or just asking a question about a
confusing part of the language has played a part in shaping this design. We'd
like to thank all of our users for their contributions.
While we don't have room to thank all of our users by name, we'd like to
specifically mention a few people for their high-quality sustained
contributions to the users@aspectj.org mailing list as well as through their
feature requests and bug reports. Robin Green (who'll be very happy to see
declare error), Stefan Hanenberg (who should appreciate the '+' wildcard in
type patterns), and Rich Price (who suggested final pointcuts, more flexible
dominates, and many other improvements).
Note that entries into the _p_o_r_t_i_n_g_ _n_o_t_e_s for this release are linked from the
various language changes.
****** PPooiinnttccuuttss ******
Perhaps the least interesting -- but most pervasive -- change is that the names
of the single-kinded pointcut designators (the ones that pick out only one kind
of join point)
     calls executions gets sets handlers initializations
     staticinitializations
have been _c_h_a_n_g_e_d to be singular rather than plural nouns
     call execution get set handler initialization staticinitialization
Although a side benefit is that the names are one character shorter, the real
benefit is that their combination with the && and || operators now reads much
more naturally. No longer does "and" mean "or" and "or" mean "and".
You'll notice that receptions doesn't appear on the table as being shortened to
reception. That's because call and reception join points have been merged, and
the receptions pointcut declaration has been _e_l_i_m_i_n_a_t_e_d. Now, call join points
describe the action of making a call, including both the caller and callee.
Eliminating reception join points makes AspectJ much simpler to understand
(reception join points were a commonly misunderstood feature) without giving up
expressive power.
We have _c_h_a_n_g_e_d_ _t_h_e_ _m_e_c_h_a_n_i_s_m_ _f_o_r_ _a_c_c_e_s_s_i_n_g_ _s_t_a_t_e at join points, which has the
benefit of making our treatment of signatures _c_l_e_a_n_e_r and easier to read. As a
part of this, the instanceof pointcut designator has now been _s_p_l_i_t_ _i_n_t_o_ _t_w_o
_d_i_f_f_e_r_e_n_t_ _p_o_i_n_t_c_u_t_ _d_e_s_i_g_n_a_t_o_r_s, this and target, corresponding to a join
point's currently executing object and target object, respectively.
The new args pointcut adds expressive power to the language by allowing you to
capture join points based on the actual type of an argument, rather than the
declared type of its formal. So even though the HashSet.removeAll method takes
a Collection as an argument, you can write advice that only runs when it is
actually passed a HashSet object.
AspectJ's notion of object construction and initialization, a complicated
process in Java, has been clarified. This affects some uses of the
_i_n_i_t_i_a_l_i_z_a_t_i_o_n_s_ _p_o_i_n_t_c_u_t and _c_o_n_s_t_r_u_c_t_o_r_ _c_a_l_l_s pointcut.
The little-used pointcuts _h_a_s_a_s_p_e_c_t and _w_i_t_h_i_n_a_l_l have been removed.
The returns keyword is _n_o_ _l_o_n_g_e_r_ _n_e_c_e_s_s_a_r_y for user-defined pointcuts.
Pointcuts may now be declared static, and _o_n_l_y_ _s_t_a_t_i_c_ _p_o_i_n_t_c_u_t_s may be declared
in classes and referred to with qualified references (such as MyAspect.move()).
Non-abstract pointcuts may now be declared final.
We have finally added an extremely general pointcut, if(BooleanExpression),
that picks out join points programatically.
****** TTyyppee ppaatttteerrnnss ******
Our treatment of _*_ _a_n_d_ _._. in type patterns is cleaner.
Type patterns now have the ability to include array types, and there is a new
wildcard, +, to pick out all subtypes of a given type. Previously, the subtypes
operator was only allowed in introduction, and was _s_p_e_l_l_e_d_ _d_i_f_f_e_r_e_n_t_l_y.
****** AAddvviiccee ******
Around advice is treated much more like a method, with a _r_e_t_u_r_n_ _v_a_l_u_e and an
optional _t_h_r_o_w_s_ _c_l_a_u_s_e.
The advice precedence rules have been _c_h_a_n_g_e_d. Now, for example, a piece of
after advice that appears lexically later than another piece of after advice
will run later, as well. Previously, the relationship was the other way around,
which caused no small amount of confusion.
After returning advice has lost a _u_s_e_l_e_s_s_ _s_e_t_ _o_f_ _p_a_r_e_n_t_h_e_s_e_s when not using the
return value.
The thisStaticJoinPoint reflective object has been _r_e_n_a_m_e_d, and the
thisJoinPoint object hierarchy has been _s_i_m_p_l_i_f_i_e_d.
****** IInnttrroodduuccttiioonn aanndd ssttaattiicc ccrroossssccuuttttiinngg ******
On the static side of the language, introduction hasn't changed, but there is
now a new keyword, declare, that is used to declare various statically-
crosscutting properties. One of these properties is subtyping, so we've _g_o_t_t_e_n
_r_i_d_ _o_f the ugly keywords +implements and +extends.
We have provided two new forms, declare error and declare warning, for the
often-asked-for property of compile-time error detection based on crosscutting
properties.
AspectJ's interaction with checked exceptions is now firmly on the side of
static crosscutting, since Java treats such exceptions at compile-time. A new
form, declare soft, can be used to "soften" checked exceptions into an
unchecked form. This may affect some uses of _a_r_o_u_n_d_ _a_d_v_i_c_e that previously
mucked with the exception checking system.
****** AAssppeeccttss ******
The "of each" modifiers have been _r_e_n_a_m_e_d. Apart from the spelling, the main
interesting difference is the splitting up of of eachobject into two different
modifiers, parallel with the split of instanceof into this and target.
The dominates keyword now takes a type pattern, rather than a type. This allows
an aspect A, for example, to declare that its advice should dominate the advice
of another aspect B as well as its subtypes, with the new + subtypes operator:
aspect A dominates B+.
******** CCoommppiilleerr ********
The most important change in the compiler is that it supports the new language.
In addition, all reported bugs in the last release have been fixed. Thanks for
your bug reports.
The compiler also gets a new -encoding flag in this release for handling source
files that are not in standard US-ASCII format. Thanks to Nakamura Tadashi for
both suggesting this feature and for submitting a nice patch to implement it.
****** KKnnoowwnn LLiimmiittaattiioonnss ******
The previous compiler's limitations regarding join points that occurred in
anonymous classes have all been eliminated. Unfortunately, eliminating this
restriction has resulted in preprocessed source code that is less readable than
in previous releases. More care will be taken in the next release to mitigate
this effect.
Many semantic errors are not caught by ajc but fall through to javac. Moreover,
some errors regarding the initialization of final fields might never show up
when using ajc. This will be fixed shortly.
******** DDooccuummeennttaattiioonn ********
Although we spent much of our time this release cycle updating the
documentation to the new language rather than improving its content, we did
make some structural improvements. The oldPrimerhas been split into
aProgramming Guide, covering the language, and aDevelopment Environment Guide,
covering the develompent tools. In addition, printable versions of both guides
(in PDF) are finally included in the documentation package.
******** AAjjddoocc ********
Ajdoc was rewritten to conform with the language changes and provide support
for other AspectJ/Java compilers. Our doclet is used by default creating
AspectJ-specific documentation, or Sun's standard doclet can be used by passing
the '-standard' flag to Ajdoc to produce regular Javadoc documentation
(excluding AspectJ-specifics).
******** AAnntt ********
An Ajdoc task is now available. The Ajc ant task was improved to be completely
back-compatible with the Javac task.
******** AAJJBBrroowwsseerr ********
The "AspectJ Browser" is a new standalone source code browsing application. It
will let you compile ".lst" files, view the structure for those files and
navigate the corresponding source code.
******** AAJJDDEE ********
****** AAJJDDEE ffoorr JJBBuuiillddeerr ******
**** IInnssttaallllaattiioonn ****
    * Use the installer to place the "ajdeForJBuilder.jar" and "aspectjrt.jar"
      in to JBuilder's lib/ext directory.
**** KKeeyy IImmpprroovveemmeennttss ****
    * The "AspectJ Structure View" replaces JBuilder's structure view instead
      of being launched in a separate window.
    * AJDE can be toggled on/off with the "AJ" button--when it is turned off
      all of the menus, resources, and event listeners that it uses will be
      removed.
    * Projects no longer require the manual adding of the "aspectjrt.jar"
      libarary.
**** KKnnoowwnn BBuuggss && LLiimmiittaattiioonnss ****
    * There is no compiler progress dialog--the way to tell if the compile is
      finished is to watch the "status" area of the main window.
    * There are no keyboard compile/execute shortcuts.
    * The structure view is not persistent between IDE launches--you must
      compile to view the structure for a program.
    * The debugger has not seen much use and it's stability and performance is
      limited.
    * There is no ajdoc tool support.
    * Linux testing has been very limited.
****** AAJJDDEE ffoorr FFoorrttee ******
**** IInnssttaallllaattiioonn ****
    * Use the installer to place the "ajdeForForte.jar" in Forte's modules
      directory and "aspectjrt.jar" in to Forte's lib/ext directory.
    * In the "Tools" menu select "Global Options"
    * Right-click the "Modules" item and select "New Module from File..."
    * Find the ajdeForForte.jar in the directory that you installed into (e.g.
      c:\forte4j\modules) and select it.
**** KKeeyy IImmpprroovveemmeennttss ****
    * AJDE can be toggled on/off with the "AJ" button--when it is turned off
      all of the menus, resources, and event listeners that it uses will be
      removed.
    * The AJDE functionality is now contained within it's own toolbar and menu.
**** KKnnoowwnn BBuuggss && LLiimmiittaattiioonnss ****
    * "Mode" switching is not supported in this version--you must do all of
      your AspectJ work in the "Editing" mode. If you switch modes the IDE has
      to be restarted for the AspectJ window to show again.
    * There is no compiler progress dialog--the way to tell if the compile is
      finished is to watch the "status" area of the main window.
    * There are no keyboard compile/execute shortcuts.
    * The structure view is not persistent between IDE launches--you must
      compile to view the structure for a program.
    * The debugger has not seen much use and it's stability and performance is
      limited.
    * There is no ajdoc tool support.
    * Linux testing has been very limited.
****** AAJJDDEE ffoorr EEmmaaccss ******
AspectJ-mode now includes a toggle in the AspectJ menu that disables its
intrusive functions, enabling easy switching between Java and AspectJ projects.
See the README and CHANGES files in the distribution for additional details.
AJDEE is now compatible with JDEE 2.2.7.1, JDEE 2.2.8beta4, and speedbar
0.14alpha. It a toggle in the AspectJ menu that disables its intrusive
functions, enabling easy switching between Java and AspectJ projects. See the
README and CHANGES files in the distribution for additional details.
===============================================================================
