<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html> <head>
  <meta http-equiv="Content-Language" content="en-us">
  <title>Changes in AspectJ</title>
<STYLE TYPE="text/css">
<!--
 
   /* FOR THE SDA PAGE */
 
	/*
	BODY {margin-top: 15px; margin-left: 15px; margin-right: 15px;}
	*/

	A:link {
		color:#4756AC;
	}
	A:visited {
		color:#60657B;
	}
	A:hover {
		color:red
	}
	
	INPUT {font:12px "Courier New", sans-serif;}
	
	H2 {
		font:18px/18px Verdana, Arial, Helvetica, sans-serif; 
		color:black; 
		font-weight:bold; 
		margin-left: 10px;
		line-height:110%; 
	}
	H3 {
		font:17px/17px Verdana, Arial, Helvetica, sans-serif; 
		color:black; 
		//font-weight:bold; 
		margin-left: 10px;
		line-height:110%; 
	}
	H4 {
		font:15px/16px Verdana, Arial, Helvetica, sans-serif; 
		color:black; 
		font-weight:bold; 
		margin-left: 10px;
		line-height:140%;
	}
	P {
		font:13px/13px Verdana, Arial, Helvetica, sans-serif; 
		margin-right: 10px;
		margin-left: 10px;
		line-height:130%; 
	}
	.paragraph {
		font:13px/13px Verdana, Arial, Helvetica, sans-serif; 
		margin-right: 10px;
		margin-left: 10px;
		line-height:130%; 
	}
	.smallParagraph {
		font:11px/11px Verdana, Arial, Helvetica, sans-serif; 
		margin-right: 10px;
		margin-left: 10px;
		line-height:130%; 
	}
	LI {
		font:13px/13px Verdana, Arial, Helvetica, sans-serif;
		text-align:justify; 
		margin-right: 10px;
		margin-left: 15px;
		line-height:120%; 
	}
	/*
	UL {
		font:13px/13px Verdana, Arial, Helvetica, sans-serif;
		text-align:justify; 
		margin-right: 10px;
		margin-left: 15px;
		line-height:120%; 
	}*/
	
	DL {
		font:13px/13px Verdana, Arial, Helvetica, sans-serif;
		text-align:justify; 
		margin-right: 10px;
		margin-left: 15px;
		line-height:120%; 
	}
	B { font:13px/13px Verdana, Arial, Helvetica, sans-serif; 
		font-weight:bold; 
		line-height:140%;
	}
	.footer {
		font:10px/10px Verdana, Arial, Helvetica, sans-serif;  
		color:#888888; 
		text-align:left
	}
	.figureTitle {
		font:13px/13px Verdana, Arial, Helvetica, sans-serif; 
		text-align:justify; 
		text-align:center
	}
	.copyrightNotice {
		font:10px/10px Verdana, Arial, Helvetica, sans-serif; 
		color:#999999; 
		line-height:110%;
	}
	.smallHeading {
		font:13px/13px Verdana, Arial, Helvetica, sans-serif; 
		font-weight:bold;
		line-height:110%;
	}
	.tinyHeading {
		font:11px/11px Verdana, Arial, Helvetica, sans-serif; 
		font-weight:bold;
		line-height:120%;
	}
	.newsText {
		font:11px/11px Verdana, Arial, Helvetica, sans-serif; 
		line-height:130%;
	}
	.smallParagraph {
		font:11px/11px Verdana, Arial, Helvetica, sans-serif; 
		line-height:130%;
	}
	.fancyHeading {
		font:20px/20px Chantilly, Arial, Helvetica, sans-serif; 
		margin-right: 10px;
		color:#6f7a92;
		margin-left: 10px;
		line-height:130%;
	}
 
-->
</STYLE>
</head>
<body>

<div align=right><small>
&copy; Copyright 1998-2002 Palo Alto Research Center Incorporated
                 2003-2004 Contributors.
All rights reserved.
</small></div>

<h2>Changes in AspectJ</h2>

<ul>

  <li> <a href="#1.5.0">1.5.0</a> (not yet released)</li>	
  <li> <a href="#1.2.1">1.2.1</a> (released 2004-10)</li>
  <li> <a href="#1.2">1.2</a> (released 2004-05) 
  </li>
  <li> <a href="#1.1.1">1.1.1</a> (released 2003-09) 
  </li>
	<li> 1.1.0 (released 2003-06-06) 
	See <a href="README-11.html">README-11.html</a>
  </li>

  <li><a href="#1.0.6">1.0.6</a> (released 2002-07-24)
    <ul>
      <li><a href="#1.0.6compiler">Compiler</a></li>
      <li><a href="#1.0.6ajde">AJDE</a></li>
      <li><a href="#1.0.6ajdoc">Ajdoc</a></li>
    </ul>
  </li>

  <li><a href="#1.0.5">1.0.5</a> (released 2002-06-27)
  </li>

  <li><a href="#1.0.4">1.0.4</a> (released 2002-04-17)
  </li>

  <li><a href="#1.0.3">1.0.3</a> (released 2002-02-08)
  </li>
  <li><a href="#1.0.2">1.0.2</a> (released 2002-02-06)
  </li>
  <li><a href="#1.0.1">1.0.1</a> (released 2001-12-18)
  </li>
  <li><a href="#1.0.0">1.0.0</a> (released 2001-11-30)
  </li>
  <li><a href="#1.0rc3">1.0rc3</a> (released 2001-11-14)
  </li>
  <li><a href="#1.0rc2">1.0rc2</a> (released 2001-10-12)
  </li>
  <li><a href="#1.0rc1">1.0rc1</a> (released 2001-10-5)
  </li>
  <li><a href="#1.0beta1">1.0beta1</a> (released 2001-08-29)
  </li>
  <li><a href="#1.0alpha1">1.0alpha1</a> (released 2001-08-09)
  </li>
  <li><a href="porting.html">Porting and Transition</a></li>
</ul>

<hr />

<h2><a name="1.5.0">1.5.0</a></h2>
<p>To be completed...</p>

<h2><a name="1.2.1">1.2.1</a></h2>
<p>All known P1 and P2 bugs have been fixed in this release. The 
<a href="https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&target_milestone=1.2.1&bug_status=RESOLVED&resolution=FIXED">full list of fixes and 
enhancements</a> can be found on bugzilla.
Some of the more significant bug fixes and enhancements include:
  <ul>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=53981">53981</a> 
     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.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=48990">48990</a>
     Optimisations added for the special cases of if(true) and if(false) in pointcut
     expressions. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=69319">69319</a> 
     The Eclipse JDT compiler inside AspectJ has been upgraded to the Eclipse 3.0 release
     version.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=61572">61572</a> 
     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.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=65319">65319</a> 
     Error message now correctly produced when attempting to bind a pointcut formal
     in both a this() and a target() pointcut sub-expression.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=70619">70619</a>
     Conflicting declare precedence statements are now handled gracefully. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=42573">42573</a>
     Relative paths specified in .lst files are now resolved relative to the lst file
     location. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=57666">57666</a>
     Resource copying from jar files correctly handles duplicate manifests. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=61768">61768</a> 
     Static inner types of an aspect can now be referenced within the body of inter-type
     declared methods in that aspect.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=62642">62642</a> 
     after-throwing advice on a static initialization join point no longer swallows
     ExceptionInInitializer errors.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=67578">67578</a>
     AspectJ 1.2.1 correctly handles privileged access to members defined in a different
     package to the privileged aspect.	 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=67592">67592</a>
     The Object[] given in response to a getArgs() call on a JoinPoint object is now
     a value copy. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=68991">68991</a> 
     Initialisers of inter-type declared fields now have field-set join points.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=69459">69459</a>
     A static inter-type method declaration is not allowed to hide an instance method. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=70794">70794</a>
     An inter-type declaration of an abstract method on a target type which is an interface
     must be declared as public. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=71372">71372</a>
     Calls can be made to private static methods of enclosing types from the body of 
     around advice in an inner aspect. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=71377">71377</a>
     Join points are now correctly detected for calls to private methods and set/get of 
     private fields within the body of around advice. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=71723">71723</a>
     A non-privileged inter-type declared method cannot call protected methods defined in 
     parent classes of the target type.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=74238">74238</a>
     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. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=74245">74245</a>
     Specifying the -proceedOnError flag will now cause the compiler to attempt
     weaving even in the face of errors. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=76030">76030</a>
     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. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54421">54421</a>
     String concatentation (using "+") is now allowed for the message associated with
     a declare error or warning statement. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=69011">69011</a>
     	ajdoc now correctly handles types in the default package. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=36747">36747</a>
     The 1.2.1 compiler supports an additional option, -showWeaveInfo, which will
     produce informational messages concerning the activity of the weaver. For example:
     </br>
     <pre>
     	Type 'tjp.Demo' (Demo.java:30) advised by around advice from 'tjp.GetInfo' 
        (GetInfo.java:26) [RuntimeTest=true] 
     </pre>
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=44191">44191</a> 
     AspectJ 1.2.1 improves the error messages issued in many of the infamous "can't find type"
     scenarios. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=46298">46298</a>
     	The code generated by ajc is now more easily digested by many decompilers (but you
     	wouldn't want to do that anyway would you?? ;) ). 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=49743">49743</a>
     Performance optimisations in the AspectJ runtime library when using getSignature() and
     toString(). 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=61374">61374</a>
     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. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=68494">68494</a>
     ajdoc now supports ".aj" files. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=72154">72154</a> 
     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
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=37020">37020</a>
     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. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=73369">73369</a>
     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. 
  </ul>


<h2><a name="1.2">1.2</a></h2>
<p>All known P1 and P2 bugs have been fixed in this release. The 
<a href="https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&target_milestone=1.2">full list of fixes and 
enhancements</a> can be found on bugzilla.
Some of the more significant bug fixes and enhancements include:
  <ul>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=46347">46347</a> 
     The ajc compiler now can read .class files from directories as well as
     zip files for bytecode weaving, via the new -inpath option.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=48080">48080</a> 
     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.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54819">54819</a> 
     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.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=36430">36430</a>
     A new -Xreweavable option has been added which allows class files to be woven
     more than once. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=49250">49250</a> 
     SoftException now supports getCause().
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=51320">51320</a>
     AspectJ 1.2 now gives a compilation error if one of the non-statically determinable
     pointcut forms is used in a declare statement.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=53012">53012</a>
     Declaring precedence on a class type (rather than an aspect type) is now an 
     error unless subtypes are included. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=36069">36069</a>
     The source information for inlined advice is now correct (using JSR 45). 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=34206">34206</a>
     (See also <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=44587">44587</a>).
     Errors occuring during static initialisation of an aspect are now handled much more gracefully. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41952">41952</a>
     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. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=42574">42574</a>
     -extdirs opion now recognises .zip files as well as .jar. 
     </li> 
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=48091">48091</a>
     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). 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=45441">45441</a> 
     IncompatibleClassChangeError at runtime when compiling with the -1.4 option.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54625">54625</a>
     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. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54965">54965</a>
     Incremental compilation under AspectJ 1.2 is approximately twice as fast as
     under AspectJ 1.1.1. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=55134">55134</a>
     Incremental compilation now deletes any additional class files generated during
     the weave phase when the class file from whence they came is deleted. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54621">54621</a>
     Incremental compilation will now detect changes (add, delete, modify) to class
     files in directories on the inpath and will include them in incremental compilation.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54621">54621</a>
     Incremental compilation will now detect changes to jars on the inpath (and injars),
     and trigger a full build if a jar is modified.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54622">54622</a>
     Incremental compilation will now detect changes to resources on the inpath.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=54618">54618</a>
     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.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=50200">50200</a> 
     The aspectjrt.jar manifest file now has  the correct (upper) case.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=49457">49457</a>
     No error given when overloading pointcuts, unless variables are bound. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=50776">50776</a> 
     Compilation failure when overriding an inter-type declared method with a
     different throws clause.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=51919">51919</a> 
     Polymorphic inter-type declaration fails.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=52464">52464</a>
     Declare warning coupled with inter-type declaration causes compiler crash. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41125">41125</a>
     Variable names in the local variable table (for debugging) are now correctly
     preserved in all cases. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=43792">43792</a>
     Improved support for non-US locales (and significantly boosted weaver 
     performance at the same time). 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=35636">35636</a>
     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). 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=42711">42711</a>
     Super-types of parameters not recognised when calling priveleged methods.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=43972">43972</a>
     (See also <a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=45676">45676</a>).
     Incorrectly adding synthetic attribute to generated methods. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=45184">45184</a>
     External pointcut references not resolved when a named pointcut is used by a 
     declare statement. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=46750">46750</a>
     Declare soft does not work inside a nested aspect. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=47754">47754</a>
     No error signalled when attempting to declare a static method on an interface
     using an inter-type declaration. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=48522">48522</a> 
     Declare soft softens all exceptions at matched join points, not just the
     exception declared to be soft.
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=49295">49295</a>
     AspectJ 1.2 no longer supports inter-type constructor declarations on interfaces. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=51929">51929</a>
     Call to a protected super-type method within a advice body causes java.lang.VerifyError. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=52928">52928</a>
     Private members introduced via an interface are incorrectly visible within implementing classes. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=47910">47910</a>
     An output jar file created by AspectJ when using the -outjar option does not contain a 
     valid manifest file. 
     </li>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=59909">59909</a>
     Thread local storage used to manage cflow stacks when available - improves cflow performance
     when working with a multi-threaded application.
     </li>    
  </ul>

<h2><a name="1.1.1">1.1.1</a></h2>

<p>All known P1 and P2 bugs have been fixed in this release. The <a href="https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&target_milestone=1.1.1">full list of bug fixes</a> 
(49 in all) can be found on bugzilla.</p>

<p>Some of the more significant bug fixes and enhancements in this release include:
  <ul>
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=40943">40943</a> 
     The ajc compiler now copies resource files from jars specified using the 
     -injars option. When compiling with source directories, resources are <i>not</i>
     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 
      <tt>sourceRootCopyFilter</tt> option.)
     Thanks to Matthew
     Webster for contributing many of the patches for this enhancement.
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=39626">39626</a> 
     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.
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=40257">40257</a>
     Relative paths are now supported in ".lst" files.
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=40771">40771</a> 
     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.
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41254">41254</a> 
     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.
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=39462">39462</a>
     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.
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=39479">39479</a> 
     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.
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41175">41175</a>
     Declared exceptions were being lost on inter-type declarations made from binary
     aspects in an aspect library.
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=41359">41359</a>
     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.
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=42539">42539</a>
     The "+" pattern was being ignored for type patterns used in throws clauses. Thanks to 
     Keith Sader for the easy to reproduce bug report.
     <li><a href="https://bugs.eclipse.org/bugs/show_bug.cgi?id=40807">40807</a>
     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.
  </ul>
</p>

<h2><a name="1.0.6">1.0.6</a></h2>

<p> This release contains mainly bug fixes for ajde and ajdoc. 

<h3><a name="1.0.6compiler">Compiler</a></h3>

<p>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. 
</p>

<h3><a name="1.0.6ajde">AJDE</a></h3>

<p><b>AJDE Framework, AJBrowser, and AJDE for Forte/NetBeans</b></p>

<p>The memory use of the structure model has been streamlined in order to reduce 
footprint when working with large systems.&nbsp; Error tolerance has also been 
improved for dealing with a structure model that is out of synch with resources 
on disk.</p>

<h4>AJDE for JBuilder</h4>

<p>JBuilder 7 is now supported.&nbsp; All known bugs have been fixed including:</p>

<ul>
  <li><a href="http://aspectj.org/bugs/resolved?id=787">787</a> 
   AJDE for JBuilder throws exception given non-existent file</li>
  <li><a href="http://aspectj.org/bugs/resolved?id=788">788</a> 
   Label too small in error message </li>
  <li><a href="http://aspectj.org/bugs/resolved?id=789">789</a> 
   Index-out-of-bounds exception in JBuilder AJDE </li>
  <li><a href="http://aspectj.org/bugs/resolved?id=792">792</a> 
   Required libraries disappear from JBuilder 6 </li>
  <li><a href="http://aspectj.org/bugs/resolved?id=795">795</a> 
   Unable to compile open tools </li>
  <li><a href="http://aspectj.org/bugs/resolved?id=802">802</a> 
   AJDE loses current (cursor) position in file when switching files </li>
</ul>

<p>In addition, thanks to user feedback that indicated trouble building JBuilder 
OpenTools with AJDE/JBuilder, the OpenTool is now being built with itself. </p>

<h3><a name="1.0.6ajdoc">Ajdoc</a></h3>
  <ul>
  <li>Fixed <a href="http://aspectj.org/bugs/resolved?id=790">790</a> 
      aspect code comments suppressed by fix to bug 710
      </li>
  <li>Known problems: <a href="http://aspectj.org/bugs/ajdoc">
      http://aspectj.org/bugs/ajdoc 
      </a></li>
  </ul>

<hr />

<h2><a name="1.0.5">1.0.5</a></h2>


<p>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. </p>

<ul>
  <li><a href="#1.0.5compiler">Compiler</a></li>
  <li><a href="#1.0.5ajde">AJDE</a></li>
  <li><a href="#1.0.5ajdoc">Ajdoc</a></li>
  <li><a href="#1.0.5anttasks">Ant tasks</a></li>
</ul>

<h3><a name="1.0.5compiler">Compiler</a></h3>

<p> 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.  </p>

<h3><a name="1.0.5ajde">AJDE</a></h3>

<h4><span style="font-weight: 400">This release includes significant 
improvements to AspectJ Development Environment (AJDE) support. All known bugs 
have been fixed, and the core framework quality has been significantly increased 
thanks to the adoption of a unit test suite.  The following changes apply 
to all of the AJDE NetBeans/Forte, JBuilder, and the AspectJ Browser support.  
NetBeans/Forte and JBuilder-specific changes are listed below.  </span></h4>


<ul>
  <li><span style="font-weight: 400">The entire user interface has been revised 
  and streamlined.</span></li>
  <li>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.  </li>
  <li>Structure view navigation now has a history exposed by back/forward.</li>
  <li>The is a new build configuration management UI.</li>
  <li>The compiler preferences UI now includes access to all build options.</li>
  <li>Error messages have been improved, and the structure views include 
  annotations of nodes with errors and warnings.</li>
</ul>

<h4>AJDE for JBuilder</h4>


<p>Integration into the JBuilder IDE is more streamlined.  In addition:</p>


<ul>
  <li>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).</li>
  <li>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.</li>
  <li>Building is better integrated and the JBuilder build toolbar is removed 
  when AJDE is enabled.</li>
  <li>Build configurations can be selected from the build button's menu.</li>
  <li>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.</li>
  <li>A new graphical build configuration editor can be used by double-clicking 
  ".lst" files that have been added to the project. </li>
  <li>Error messages now match JBuilder's look-and-feel and behavior.  
  Seeking to column numbers now works in addition to line numbers.</li>
</ul>


<h4>AJDE for Forte/NetBeans</h4>


<p>Integration into the NetBeans IDE is more streamlined.  In addition:</p>


<ul>
  <li>NetBeans 3.3.2 and SunONE Studio 4 are supported.</li>
  <li>Multiple filesystems are supported.</li>
  <li>Default project build configurations (all project files) are now 
  supported.</li>
  <li>Build configurations can be selected in the tool bar.</li>
  <li>Regular NetBeans execution and debugging is supported.  Note that you 
  have to add netbeans/lib/ext/aspectjrt.jar file to your project configuration.</li>
  <li>Class files are generated beside source files (NetBeans/javac default).  
  There is currently no way to specify a target directory.</li>
</ul>


<h4>AJBrowser</h4>


<ul>
  <li>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.</li>
  <li>The error messages UI has been improved.</li>
</ul>


<h3><a name="1.0.5ajdoc">Ajdoc</a></h3>
<p>Bug fixes:
</p>
  <ul>
  <li><a href="http://aspectj.org/bugs/resolved?id=710">710 - 
      compiler-generated constructor shown with class comment
      </a></li>
  <li><a href="http://aspectj.org/bugs/resolved?id=712">712 - 
      comments lost in aspect docs for methods 
      or constructors declared on other types.
      </a></li>
  <li><a href="http://aspectj.org/bugs/resolved?id=719">719 - 
      poor support for @link, @see tags
      </a></li>
  <li><a href="http://aspectj.org/bugs/resolved?id=742">742 - 
      crash with @see tag
      </a></li>
  <li><a href="http://aspectj.org/bugs/resolved?id=751">751 - 
      error loading doclet resource
      </a></li>
  </ul>

<h3><a name="1.0.5anttasks">Ant tasks</a></h3>
<p>Bug fixes:
</p>
  <ul>
  <li><a href="http://aspectj.org/bugs/resolved?id=730">730 - 
      document all supported ajc flags <a></li>
  </ul>

<hr />

<h2><a name="1.0.4">1.0.4</a></h2>

<ul>
         <li><a href="#1.0.4compiler">Compiler</a></li>
         <li><a href="#1.0.4ajde">AJDE</a></li>
         <li><a href="#1.0.4ajdoc">Ajdoc</a></li>
         <li><a href="#1.0.4taskdefs">Ant taskdefs</a></li>
         <li><a href="#1.0.4doc">Documentation</a></li>
</ul>

<h3><a name="1.0.4compiler">Compiler</a></h3>
<ul>
  <li>Over a dozen people independently reported a bug in error
  handling for the wrong number number of arguments to
  <code>proceed</code>.  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 <code>this</code> and <code>target</code> using proceed
  in around advice.
  </li>
  <li>David Walend gets the <em>black thumb</em> 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.
  </li>
  <li>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.
  </li>
</ul>

<h4>Incompatible changes</h4>

<p>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.</p>

<ul>
  <li>The obsolete class
  <code>org.aspectj.lang.MultipleAspectsBoundException</code> 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.</code>

  <li>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 <a href="porting.html#pre-1.0.4">porting notes</a>.</li>
</ul>

<h3><a name="1.0.4ajde">AJDE</a></h3>


<p>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.</p>


<h4>AJDE for JBuilder</h4>

<ul>
  <li>Updates<ul>
    <li>This is a bug fix release only.  </li>
  </ul>
  </li>
</ul>

<h4>AJDE for Forte/NetBeans</h4>

<ul>
  <li>Updates<ul>
    <li>NetBeans 3.3.1 is now supported in addition to NetBeans 3.2 and Forte CE 
    3.</li>
    <li>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".  </li>
    <li>The debugger can now be used if the project main class is set ("Project" 
    menu -&gt; "Set Project Main Class...").</li>
    <li>Numerous bugs have been fixed.</li>
  </ul>
  </li>
  <li>Known limitations<ul>
    <li>Breakpoint setting does not work in the debugger.</li>
    <li>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.</li>
  </ul>
  </li>
</ul>

<h4>AJDE for Emacs</h4>


<ul>
  <li>This is a bug fix release only.</li>
</ul>


<h3><a name="1.0.4ajdoc">Ajdoc</a></h3>
<p>Ajdoc now runs under J2SE 1.4, but still requires the tools.jar 
   from J2SE 1.3 be on the classpath.
</p>

<h3><a name="1.0.4taskdefs">Ant tasks</a></h3>
<ul>
   <li>Repackaged to fit into the AspectJ product directory - e.g., 
       <code>aspectj-ant.jar</code> moved to <code>lib</code> 
       as expected by <code>examples/build.xml</code>.
   </li>
   <li>Fixed bugs, esp. <a href="http://aspectj.org/bugs/resolved?id=682">682</a>:
       Throw BuildException if failonerror and ajdoc detects misconfiguration.
   </li>
</ul>
<h3><a name="1.0.4doc">Documentation</a></h3>
<p>Added a 1-page quick reference guide.  Improved javadoc documentation for
   the org.aspectj.lang package.
</p>


<hr/>

<h2><a name="1.0.3">1.0.3</a></h2>

<ul>
  <li><a href="#1.0.3compiler">Compiler</a></li>
  <li><a href="#1.0.3taskdefs">Ant taskdefs</a></li>
</ul>

<h3><a name="1.0.3compiler">Compiler</a></h3>
<p> This release fixes a single significant bug in 1.0.2 where ajc
could generate unreachable code in <code>-usejavac</code> or
<code>-preprocess</code> mode.  This would happen when around advice
was placed on void methods whose body consisted solely of a
<code>while (true) {}</code> 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.
</p>

<h3><a name="1.0.3taskdefs">Ant taskdefs</a></h3>
<p>Added support to the Ajc taskdef for the -source 1.4 and -X options generally.
</p>

<hr />

<h2><a name="1.0.2">1.0.2</a></h2>

<p> 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.
</p>

<ul>
  <li><a href="#1.0.2compiler">Compiler</a></li>
  <li><a href="#1.0.2ajde">AJDE</a></li>
  <li><a href="#1.0.2ajdb">AJDB</a></li>
</ul>

<h3><a name="1.0.2compiler">Compiler</a></h3>

<ul>
  <li>Official support for <code>-source 1.4</code> option to compile new
      <a href="http://java.sun.com/j2se/1.4/docs/guide/lang/assert.html">1.4 assertions</a>.
      This makes ajc completely compatible with j2se-1.4.
  </li>
  <li>Implementation of <a href="http://jcp.org/jsr/detail/45.jsp">
      JSR-45 Debugging Support for Other Languages</a> 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.
  </li>
  <li>As proposed by Arno Schmidmeier and seconded by Nick Lesiecki, we now have an
      experimental <code>-Xlint</code> 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.
  </li>
  <li>Several significant bugs in the implementation of around advice have been fixed.
      These include issues with <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=632">
      dynamic tests</a>, with
      <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=620">
      complicated local types in an around body</a>, and with 
      <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=636">
      capturing proceed in a closure</a>.
  </li>
  <li>All but two (<a href="http://aspectj.org/jitterbug/aspectj-bugs/compiler?id=626">1</a>,
      <a href="http://aspectj.org/jitterbug/aspectj-bugs/compiler?id=645">2</a>)
      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.
  </li>
  <li>We no longer use the <code>SYNTHETIC</code> attribute to label declarations
      added by the aspectj compiler.  We were using this attribute in compliance
      with <a href="http://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#80128">
      the JVM Specification</a>; 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
      <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=649">with javap</a> and
      <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=646">with javac</a>.
  </li>
  <li>Changes required adding runtime classes, so please compile and run using the latest 
      <code>aspectjrt.jar</code>
  </li>

</ul>

<h3><a name="1.0.2ajde">AJDE</a></h3>

<p align="left">This is a bug fix release only.  </p>

<ul>
  <li>

<p align="left">Thanks to Dave Yost and Matt Drance for submitting the AJDE 
patches for Mac OSX (context popup menus and keyboard shortcuts did not work).  </p>

  </li>
  <li>

<p align="left">Bugs in history navigation (back-forward buttons in the 
structure view) have been fixed.</p>

  </li>
  <li>

<p align="left">"Declares" are now handled properly in the structure view.</p>

  </li>
  <li>

<p align="left">Other GUI and usability improvements have been made the AspectJ 
Browser and core framework.</p>

  </li>
</ul>

<h4>AJDE for JBuilder</h4>


<ul>
  <li>Support has been extended to JBuilder 6, and support for Enterprise 
  version features has been improved.</li>
  <li>Fixed bug causing inline source code annotations in the editor pane to not 
  be updated after a recompile.</li>
  <li>Keyboard shortcuts were fixed to work with Mac OSX.</li>
</ul>


<h4>AJDE for Forte</h4>


<ul>
  <li>Keyboard shortcuts were fixed to work with Mac OSX.</li>
</ul>

<h4><a name="1.0.2ajdb">AJDB</a></h4>

<p> 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.
</p>

<hr />

<h2><a name="1.0.1">1.0.1</a></h2>

<ul>
  <li><a href="#1.0.1compiler">Compiler</a></li>
  <li><a href="#1.0.1ajde">AJDE</a></li>
  <li><a href="#1.0.1ajdb">AJDB</a></li>
</ul>

<h3><a name="1.0.1compiler">Compiler</a></h3>

<p> 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 <a
href=http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=610>this
bug report</a> for an example.
</p>

<p> A new experimental flag has been added,
<code>-XaddSafePrefix</code>, that will cause the prefix
<code>aspectj$</code> 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.
</p>


<h3><a name="1.0.1ajde">AJDE</a></h3>

<p align="left">Minor bug fixes, including: AJDE for JBuilder failed to preserve 
application parameters from project settings when executing the application.</p>

<p align="left">Source builds were cleaned up for JBuilder and Forte sources.</p>

<h3><a name="1.0.1ajdb">AJDB</a></h3>

<p>Two bugs were reported and have been fixed in this release. 
   (Note that ajdb is still considered early-access software.)</p>

<ul>
  <li>bug 611: NullPointerException dumping non-primitive values</li>
  <li>bug 617: -X and -D options not passed to debug VM correctly</li>
</ul>

<h2><a name="1.0.0">1.0.0</a></h2>

<ul>
  <li><a href="#1.0.0language">Language</a></li>
  <li><a href="#1.0.0compiler">Compiler</a></li>
  <li><a href="#1.0.0ajde">AJDE</a></li>
  <li><a href="#1.0.0ajdoc">AJDoc</a></li>
  <li><a href="#1.0.0taskdefs">Ant taskdefs</a></li>
</ul>

<h2><a name="1.0.0language">Language</a></h2>

<p>There were no language changes for this release.</p>

<h2><a name="1.0.0compiler">Compiler</a></h2>

<p>Several minor bugs primarily in error handling were reported and
have been fixed in this release.  The two most serious bugs are
described below:</p>

<ul>
  <li>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
  <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=601">
  here</a> and
  <a href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=595">
  here</a>
  </li>

  <li>Jan Hannemann submitted a <a
  href="http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=600">
  succint and clear bug report</a> 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.</li> </ul>

<h2><a name="1.0.0ajde">AJDE</a></h2>

<p align="left">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.</p>

<h4>AJDE for JBuilder</h4>


<ul>
  <li>The AspectJ Browser now uses JBuilder's icons and distinguishes nodes by 
  visibility.</li>
  <li>Project-setting VM parameters are now supported by the "AJDE Run" button.</li>
</ul>


<h4>AJDE for Forte</h4>


<ul>
  <li>The AspectJ Browser now uses Forte's icons and distinguishes nodes by 
  visibility</li>
</ul>


<h4>AJBrowser</h4>


<ul>
  <li>Documentation for the browser is now available at
  <a href="http://aspectj.org/docs">http://aspectj.org/docs</a> </li>
</ul>


<h4>Emacs Support: aspectj-mode and AJDEE</h4>

<ul>
  <li>Improved updating of annotations during editing.</li>
  <li>Pop-up jump menu now placed (with mouse pointer) near cursor.</li>
  <li>[AJDEE only] Improved filtering of legal code completions.</li>
</ul>

<h4><a name="1.0.0ajdoc">AJDoc</a></h4>

<ul>
  <li>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.</li>
  <li>Disabled some non-functioning options, documented as 
      <code>unsupported</code> in the syntax message.</li>
</ul>

<h4><a name="1.0.0taskdefs">Ant taskdefs</a></h4>
<ul>
  <li>Fork is not supported in the AJDoc taskdef</li>
</ul>

<h2><a name="1.0rc3">1.0rc3</a></h2>

<h2><a name="1.0rc3language">Language</a></h2>

<p>There have been several minor clarifications/changes to the
language.</p>

<ul>
  <li>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.  <a href=http://aspectj.org/pipermail/users/2001/001289.html>
  More details...</a></li>

  <li>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.
  <a href=http://aspectj.org/pipermail/users/2001/001258.html> More
  details...</a></li>
</ul>

<h2><a name="1.0rc3compiler">Compiler</a></h2>

<p>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.</p>

<ul>
  <li>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.
  <a href=http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=551>
  More details...</a></li>

  <li>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. <a
  href=http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=580>More
  details...</a></li>

  <li>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.  <a
  href=http://aspectj.org/jitterbug/aspectj-bugs/resolved?id=574> More
  details...</a></li>

  <li>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.</li>
</ul>

<h2><a name="1.0rc3ajde">AJDE</a></h2>

<ul>
  <li>The structure view has been improved.  </li>
  <li>Multiple user-configurable views are supported.</li>
  <li>Structure tree filtering and ordering has been added.  </li>
  <li>A split tree mode has been added to permit the navigation of multiple 
  views on the same structure.  </li>
  <li>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.  </li>
  <li>The signatures of tree nodes have been improved and several new node 
  associations are now navigable.  </li>
  <li>A depth slider for controlling tree-expansion has been added.</li>
</ul>

<h4>AJDE for JBuilder</h4>


<ul>
  <li>Changes:</li>
  <li>Inline annotations support have been improved and made consistent with the 
  structure tree (annotations only show up for intra-declaration structure).</li>
  <li>The current structure view persists across IDE launches.</li>
  <li>An enabled AJDE no longer slows down JBuilder shutdown.</li>
</ul>


<h4>AJDE for Forte</h4>


<ul>
  <li>Execution remembers main class.</li>
  <li>The bug causing an error during a "Mode" and "Explorer" switch has been 
  fixed.</li>
</ul>


<h4>AJBrowser</h4>


<ul>
  <li>AJBrowser is currently an undocumented demonstration application. To use 
  it type: ajbrowser &lt;lst file1&gt; &lt;lst file2&gt; ...</li>
  <li>Multiple source locations can be shown by selecting multiple nodes and 
  right-clicking to select the "Display Sources" command.</li>
</ul>


<h4>Emacs Support: aspectj-mode and AJDEE</h4>

<ul>
  <li>Numerous jump-menu improvements, including operation of pop-ups.</li>
  <li>For AJDEE, compatibility with JDEE 2.2.9beta4. Also, fixes in completion,
      ajdoc launch, and speedbar.</li>
</ul>

<h3><a name="1.0rc3ajdoc">AJDoc</a></h3>

<p>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:</p>
<ul>
  <li>Split indexes do not work correctly</li>
  <li>Inner classes are not listed in indexes </li>
  <li>Synthetic methods are documented</li>
  <li>There is no package frame even when packages are specified on the command line</li>
  <li>-group option is not implemented</li>
  <li>-use targets are not all calculated correctly</li>
  <li>Exception information may not be printed for the @throws tag</li>
  <li>Verbose output should go to stderr, not stdout</li>
  <li>Extra links are generated (should be unlinked text) </li>
</ul>
<p>Further, Ajdoc has not been testing on variants of the J2SE (it uses javadoc classes).

<h3><a name="1.0rc3taskdefs">Ant taskdefs</a></h3>
<p>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.
<p>
<hr />
<h2><a name="1.0rc2">1.0rc2</a></h2>

       <ul>
         <li><a href="#1.0rc2language">Language</a></li>
         <li><a href="#1.0rc2compiler">Compiler</a></li>
         <li><a href="#1.0rc2ajde">AJDE</a></li>
       </ul>

<h2><a name="1.0rc2language">Language</a></h2>

<p>There are no language changes in this release. This is a bug fix release 
only.</p>

<h2><a name="1.0rc2compiler">Compiler</a></h2>

<p>A bug in handling inner type names that conflict with enclosing
type names was fixed.  Many error messages were improved.</p>

<h2><a name="1.0rc2ajde">AJDE</a></h2>

<ul>
  <li>This is a bug fix release only.</li>
</ul>

<h4>AJDE for JBuilder</h4>

<ul>
  <li>Changes:<ul>
  <li>Fixed bug causing the output path to be ignored and .class files to be 
  generated into the JBuilder install's "bin" directory.</li>
  <li>Fixed bugs in Browser listener causing NullPointerExceptions to be thrown 
  if no node editor was present.</li>
  <li>Fixed bug permitting "-bcg" option to be passed to the compiler.</li>
  <li>Fixed bug preventing ajc from compiling all of the project source files 
  when automatic package discovery was on (JBuilder Proffessional and Enterprise 
  editions).</li>
  <li>If the "-preprocess" flag is used resulting source files will be placed in 
  the project's "Working directory".</li>
</ul>

  </li>
  <li>Limitations:<ul>
    <li>"Automatic package discovery" mode is not supported in this release.</li>
    <li>The debugger has not seen much use and it's stability and performance is 
  limited.</li>
  </ul>
  </li>
</ul>

<h4>AJDE for Forte</h4>

<ul>
  <li>Changes:<ul>
  <li>Moved the "AspectJ" menu into the "Tools" menu in order to make it less 
  intrusive.</li>
  <li>Added a "ctrl-alt-shift-F9" keyboard compile shortcut.</li>
</ul>

  </li>
  <li>Limitations:<ul>
    <li>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.</li>
    <li>The debugger has not seen much use and it's stability and performance is 
  limited.</li>
  </ul>
  </li>
</ul>

<h4>AJBrowser</h4>

<ul>
  <li>Changes:<ul>
  <li>...</li>
</ul>

  </li>
  <li>Limitations:<ul>
  <li>AJBrowser is currently an undocumented demonstration application. To use 
  it type:<br>
  &gt; ajbrowser &lt;lst file1&gt; &lt;lst file2&gt; ...</li>
</ul>

  </li>
</ul>

<h4>Emacs Support: aspectj-mode and AJDEE</h4>

<p align="left">  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.</p>

<hr />

<h2><a name="1.0rc1">1.0rc1</a></h2>

       <ul>
         <li><a href="#1.0rc1language">Language</a></li>
         <li><a href="#1.0rc1compiler">Compiler</a></li>
         <li><a href="#1.0rc1ajde">AJDE</a></li>
       </ul>

<h2><a name="1.0rc1language">Language</a></h2>

<p>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
<a href="progguide/semantics.html">the semantics section of the programming
guide</a>.
</p>

<p>In a related change, aspects are not allowed to implement either
the <code>java.io.Serializable</code> or the
<code>java.lang.Cloneable</code> 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.</p>

<h2><a name="1.0rc1compiler">Compiler</a></h2>

<p>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.</p>

<p>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.
</p>

<p>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.</p>

<h2><a name="1.0rc1ajde">AJDE</a></h2>

<ul>
  <li>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.</li>
  <li>Structure view history navigation has been added. </li>
  <li>When navigating links the structure view will stay synchronized with the
  editor.</li>
</ul>

<h4>AJDE for JBuilder</h4>

<ul>
  <li>Changes:<ul>
  <li>Inline structural navigation annotations appear in the gutter of the
  editor and can be used to navigate associations such as advice and
  introduction.</li>
</ul>

  </li>
  <li>Limitations:<ul>
    <li>"Automatic package discovery" mode is not supported in this release.</li>
    <li>The debugger has not seen much use and it's stability and performance is
  limited.</li>
  </ul>
  </li>
</ul>

<h4>AJDE for Forte</h4>

<ul>
  <li>Changes:<ul>
  <li>Support for Forte 3 and Netbeans 3.2 has been added.</li>
  <li>The module is now installed by default on the first use without having to
  go to the IDE options to enable it.</li>
</ul>

  </li>
  <li>Limitations:<ul>
    <li>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.</li>
    <li>The debugger has not seen much use and it's stability and performance is
  limited.</li>
  </ul>
  </li>
</ul>

<h4>AJBrowser</h4>

<ul>
  <li>Changes:<ul>
  <li>Build configuration file editor added.</li>
</ul>

  </li>
  <li>Limitations:<ul>
  <li>AJBrowser is currently an undocumented demonstration application. To use
  it type:<br>
  &gt; ajbrowser &lt;lst file1&gt; &lt;lst file2&gt; ...</li>
</ul>

  </li>
</ul>

<h4>Aspectj-mode and AJDEE: AspectJ support in Emacs</h4>

<p align="left">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. </p>

<hr />

<h2><a name="1.0beta1">1.0beta1</a></h2>

<ul>
  <li><a href="#1.0beta1language">Language</a></li>
  <li><a href="#1.0beta1compiler">Compiler</a></li>
  <li><a href="#1.0beta1ajbrowser">AJBrowser</a></li>
  <li><a href="#1.0beta1ajde">AJDE</a></li>
</ul>

<h2><a name="1.0beta1language">Language</a></h2>

<p>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.</p>

<p>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.</p>

<h2><a name="1.0beta1compiler">Compiler</a></h2>

<p>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.</p>

<p>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.</p>

<h2><a name="1.0beta1ajbrowser">AJBrowser</a></h2>

<ul>
  <li>Support for executing classes has been added.</li>
  <li>.lst can now be passed as arguments on the command line.</li>
  <li>Compiler options can be set.</li>
  <li>Know limitations:<ul>
    <li>In order to execute classes they must be available on the classpath that
    the browser is launched with.</li>
  </ul>
  </li>
</ul>

<h2><a name="1.0beta1ajde">AJDE</a></h2>

<ul>
  <li>The performance and UI of the structure tree has been improved.</li>
  <li>Compilation now runs in a separate thread and a progress monitor is
  updated during the compile.</li>
  <li>The structure view now persists across IDE launches.</li>
  <li>Limitations:<ul>
  <li>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.</li>
</ul>

  </li>
</ul>

<h4>AJDE for JBuilder</h4>

<ul>
  <li>Known bugs have been fixed.</li>
  <li>Classpath separator character is no longer hardcoded.</li>
  <li>Keyboard shortcuts for compilation (ctrl-F11) and execution (ctrl-F12)
  have been added.</li>
  <li>Limitations:<ul>
    <li>The debugger has not seen much use and it's stability and performance is
  limited.</li>
  </ul>
  </li>
</ul>

<h4>AJDE for Forte</h4>

<ul>
  <li>Known bugs have been fixed.</li>
  <li>Limitations:<ul>
    <li>"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.</li>
    <li>There are no keyboard compile/execute shortcuts.</li>
    <li>The debugger has not seen much use and it's stability and performance is
  limited.</li>
  </ul>
  </li>
</ul>

<h4>Aspectj-mode and AJDEE: AspectJ support in Emacs</h4>

<p> 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.
</p>

<hr />

<h2><a name="1.0alpha1">1.0alpha1</a></h2>

<p> 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. </p>

      <ul>
         <li><a href="#1.0alpha1language">Language</a></li>
         <li><a href="#1.0alpha1compiler">Compiler</a></li>
         <li><a href="#1.0alpha1documentation">Documentation</a></li>
         <li><a href="#1.0alpha1ajdoc">AJDoc</a></li>
         <li><a href="#1.0alpha1ant">Ant</a></li>
         <li><a href="#1.0alpha1ajbrowser">AJBrowser</a></li>
         <li><a href="#1.0alpha1ajde">AJDE</a></li>
       </ul>

<h3><a name="1.0alpha1language">Language</a></h3>

<p> 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.

<p>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 <code>declare error</code>), Stefan
Hanenberg (who should appreciate the '+' wildcard in type patterns),
and Rich Price (who suggested final pointcuts, more flexible
dominates, and many other improvements).<p>

<p> Note that entries into the <a href="porting.html">porting
notes</a> for this release are linked from the various language
changes.  </p>

<h4>Pointcuts</h4>

<p> 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) </p>

<blockquote>calls executions gets sets handlers initializations
staticinitializations</blockquote>

<p> have been
<a href="porting.html#1.0a1-plural-to-singular">changed</a> to be
singular rather than plural nouns </p>

<blockquote>call execution get set handler initialization
staticinitialization</blockquote>

<p> Although a side benefit is that the names are one character
shorter, the real benefit is that their combination with the
<CODE>&amp;&amp;</CODE> and <code>||</code> operators now reads much
more naturally.  No longer does "and" mean "or" and "or" mean "and".
</p>

<p> You'll notice that <code>receptions</code> doesn't appear on the
table as being shortened to <code>reception</code>.  That's because
call and reception join points have been merged, and the
<code>receptions</code> pointcut declaration has been
<a href="porting.html#1.0a1-remove-receptions">eliminated</a>.  Now,
<code>call</code> 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.</p>

<p> We have <a href="porting.html#1.0a1-fixing-state-access">changed
the mechanism for accessing state</a> at join points, which has the
benefit of making our treatment of signatures
<a href="porting.html#1.0a1-no-subs-in-sigs">cleaner</a> and easier to
read.  As a part of this, the <code>instanceof</code> pointcut
designator has now been
<a href="porting.html#1.0a1-fixing-instanceof">split into two
different pointcut designators</a>, <code>this</code> and
<code>target</code>, corresponding to a join point's currently
executing object and target object, respectively.  </p>

<p> The new <code>args</code> 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 <code>HashSet.removeAll</code> method takes a
<code>Collection</code> as an argument, you can write advice that only
runs when it is actually passed a <code>HashSet</code> object. </p>

<p> AspectJ's notion of object construction and initialization, a
complicated process in Java, has been clarified.  This affects some
uses of the
<a href="porting.html#1.0a1-initializations">initializations
pointcut</a> and
<a href="porting.html#1.0a1-constructor-calls">constructor calls</a>
pointcut.  </p>

<p> The little-used pointcuts
<a href="porting.html#1.0a1-hasaspect"><code>hasaspect</code></a> and
<a href="porting.html#1.0a1-withinall"><code>withinall</code></a> have
been removed. </p>

<p> The <code>returns</code> keyword is
<a href="porting.html#1.0a1-user-defined-returns">no longer
necessary</a> for user-defined pointcuts.  </p>

<p> Pointcuts may now be declared <code>static</code>, and
<a href="porting.html#1.0a1-static-pointcuts">only static
pointcuts</a> may be declared in classes and referred to with
qualified references (such as <code>MyAspect.move()</code>).  </p>

<p> Non-abstract pointcuts may now be declared <code>final</code>.
</p>

<p> We have finally added an extremely general pointcut,
<code>if(<var>BooleanExpression</var>)</code>, that picks out
join points programatically.  </p>


<h4>Type patterns</h4>

<p> Our treatment of
<a href="porting.html#1.0a1-new-wildcards">* and ..</a> in type
patterns is cleaner.  </p>

<p> 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 <a href="porting.html#1.0a1-subtypes-to-plus">spelled
differently</a>.  </p>

<h4>Advice</h4>

<p> Around advice is treated much more like a method, with a
<a href="porting.html#1.0a1-around-returns">return value</a> and an
optional <a href="porting.html#1.0a1-around-throws">throws clause</a>.
</p>

<p> The advice precedence rules have been
<a href="porting.html#1.0a1-advice-precedence">changed</a>.  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.  </p>

<p> After returning advice has lost a
<a href="porting.html#1.0a1-after-returning">useless set of
parentheses</a> when not using the return value. </p>

<p> The <code>thisStaticJoinPoint</code> reflective object has been
<a href="porting.html#1.0a1-this-static-join-point">renamed</a>, and
the <code>thisJoinPoint</code> object hierarchy has been
<a href="porting.html#1.0a1-this-join-point">simplified</a>.  </p>

<h4>Introduction and static crosscutting</h4>

<p> On the static side of the language, introduction hasn't changed,
but there is now a new keyword, <code>declare</code>, that is used to
declare various statically-crosscutting properties.  One of these
properties is subtyping, so we've
<a href="porting.html#1.0a1-plus-implements-extends">gotten rid of</a>
the ugly keywords <code>+implements</code> and
<code>+extends</code>. </p>

<p> We have provided two new forms, <code>declare error</code> and
<code>declare warning</code>, for the often-asked-for property of
compile-time error detection based on crosscutting properties. </p>

<p> 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, <code>declare soft</code>, can be used to
"soften" checked exceptions into an unchecked form.  This may affect
some uses of <a href="porting.html#1.0a1-now-use-soft">around
advice</a> that previously mucked with the exception checking
system.</p>

<h4>Aspects</h4>

<p> The "of each" modifiers have been
<a href="porting.html#1.0a1-aspects">renamed</a>.  Apart from the
spelling, the main interesting difference is the splitting up of
<code>of eachobject</code> into two different modifiers, parallel with
the split of <code>instanceof</code> into <code>this</code> and
<code>target</code>.  </p>

<p> The <code>dominates</code> 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: <code>aspect A
dominates B+</code>.
</p>

<h3><a name="1.0alpha1compiler">Compiler</a></h3>

<p> 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.</p>

<p>The compiler also gets a new <code>-encoding</code> 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.

<h4>Known Limitations</h4>

<p> 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.  </p>

<p> 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.  </p>


<h3><a name="1.0alpha1documentation">Documentation</a></h3>

<p> 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 old <cite>Primer</cite> has been
split into a <cite>Programming Guide</cite>, covering the language, and a
<cite>Development Environment Guide</cite>, covering the develompent tools.  In
addition, printable versions of both guides (in PDF) are finally
included in the documentation package.  </p>

<h3><a NAME="1.0alpha1ajdoc">Ajdoc</a></h3>

<p> 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).
</p>

<h3><a NAME="1.0alpha1ant">Ant</a></h3>

<p> An Ajdoc task is now available.  The Ajc ant task was improved to
be completely back-compatible with the Javac task.</p>

<h3><a NAME="1.0alpha1ajbrowser">AJBrowser</a></h3>

<p> 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.</p>

<h3><a name="1.0alpha1ajde">AJDE</a></h3>

<h4>AJDE for JBuilder</h4>

<h5>Installation</h5>
<ul>
  <li>Use the installer to place the "ajdeForJBuilder.jar" and "aspectjrt.jar"
  in to JBuilder's lib/ext directory.</li>
</ul>

<h5>Key Improvements</h5>

<ul>
  <li>The "AspectJ Structure View" replaces JBuilder's structure view instead of
  being launched in a separate window.</li>
  <li>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.</li>
  <li>Projects no longer require the manual adding of the "aspectjrt.jar"
  libarary.</li>
</ul>

<h5>Known Bugs &amp; Limitations</h5>

<ul>
  <li>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.</li>
  <li>There are no keyboard compile/execute shortcuts.</li>
  <li>The structure view is not persistent between IDE launches--you must
  compile to view the structure for a program.</li>
  <li>The debugger has not seen much use and it's stability and performance is
  limited.</li>
  <li>There is no ajdoc tool support.</li>
  <li>Linux testing has been very limited.</li>
</ul>


<h4>AJDE for Forte</h4>


<h5>Installation</h5>

<ul>
  <li>Use the installer to place the "ajdeForForte.jar" in Forte's
  modules directory  and "aspectjrt.jar"
  in to Forte's lib/ext directory.</li>
  <li>
  In the "Tools" menu select "Global Options"</li>
  <li>
  Right-click the "Modules" item and select "New Module from
    File..."</li>
  <li>
  Find the ajdeForForte.jar in the directory that you installed into (e.g.
    c:\forte4j\modules) and
    select it.</li>
</ul>

<h5>Key Improvements</h5>

<ul>
  <li>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.</li>
  <li>The AJDE functionality is now contained within it's own toolbar and menu.</li>
</ul>

<h5>Known Bugs &amp; Limitations</h5>

<ul>
  <li>"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.</li>
  <li>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.</li>
  <li>There are no keyboard compile/execute shortcuts.</li>
  <li>The structure view is not persistent between IDE launches--you must
  compile to view the structure for a program.</li>
  <li>The debugger has not seen much use and it's stability and performance is
  limited.</li>
  <li>There is no ajdoc tool support.</li>
  <li>Linux testing has been very limited.</li>
</ul>

<h4>AJDE for Emacs</h4>

<p> 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.  </p>

<p> 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.
</p>


<hr />

</body>
</html>
