1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618 |
- = Changes in AspectJ
- :doctype: book
- :leveloffset: +1
-
- _© Copyright 1998-2002 Palo Alto Research Center Incorporated
- 2003-2008 Contributors. All rights reserved._
-
- * xref:#_1_6_0[AspectJ 1.6.0] (released 2008-04)
- * xref:#_1_5_4[AspectJ 1.5.4] (released 2007-12)
- * xref:#_1_5_3[AspectJ 1.5.3] (released 2006-11)
- * xref:#_1_5_2[AspectJ 1.5.2] (released 2006-06)
- * xref:#_1_5_1[AspectJ 1.5.1] (released 2006-04)
- * xref:#_1_5_0[AspectJ 1.5.0] (released 2005-12)
- * xref:#_1_2_1[AspectJ 1.2.1] (released 2004-10)
- * xref:#_1_2[AspectJ 1.2] (released 2004-05)
- * xref:#_1_1_1[AspectJ 1.1.1] (released 2003-09)
- * AspectJ 1.1.0 (released 2003-06-06) See xref:README-1.1.adoc#readme-1_1[release notes].
- * xref:#_1_0_6[AspectJ 1.0.6] (released 2002-07-24)
- * xref:#_1_0_5[AspectJ 1.0.5] (released 2002-06-27)
- * xref:#_1_0_4[AspectJ 1.0.4] (released 2002-04-17)
- * xref:#_1_0_3[AspectJ 1.0.3] (released 2002-02-08)
- * xref:#_1_0_2[AspectJ 1.0.2] (released 2002-02-06)
- * xref:#_1_0_1[AspectJ 1.0.1] (released 2001-12-18)
- * xref:#_1_0_0[AspectJ 1.0.0] (released 2001-11-30)
- * xref:#_1_0rc3[AspectJ 1.0rc3] (released 2001-11-14)
- * xref:#_1_0rc2[AspectJ 1.0rc2] (released 2001-10-12)
- * xref:#_1_0rc1[AspectJ 1.0rc1] (released 2001-10-5)
- * xref:#_1_0beta1[AspectJ 1.0beta1] (released 2001-08-29)
- * xref:#_1_0alpha1[AspectJ 1.0alpha1] (released 2001-08-09)
- * xref:porting.adoc[Porting and Transition]
-
- '''''
-
- [[_1_6_0]]
- = AspectJ 1.6.0
-
- 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
- https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=AspectJ&target_milestone=1.6.0+M1&target_milestone=1.6.0+M2&target_milestone=1.6.0+RC1&target_milestone=1.6.0&long_desc_type=allwordssubstr&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED&emailtype1=substring&email1=&emailtype2=substring&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0=[Bugzilla].
-
- [[_1_5_4]]
- = AspectJ 1.5.4
-
- 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
- https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&product=AspectJ&target_milestone=1.5.4&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED[]
- Bugzilla
-
- [[_1_5_3]]
- = AspectJ 1.5.3
-
- 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
- https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&product=AspectJ&target_milestone=1.5.3&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED[]
- Bugzilla
-
- [[_1_5_2]]
- = AspectJ 1.5.2
-
- 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
- https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&product=AspectJ&target_milestone=1.5.2&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED[]
- Bugzilla
-
- [[_1_5_1]]
- = AspectJ 1.5.1
-
- 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
- https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&product=AspectJ&target_milestone=1.5.1&bug_status=RESOLVED&bug_status=VERIFIED&bug_status=CLOSED[]
- Bugzilla
-
- [[_1_5_0]]
- = AspectJ 1.5.0
-
- This release contains nearly 400 bug fixes and enhancements since the
- 1.2.1 release. Major updates to the language are documented in the
- xref:../adk15notebook/adk15notebook.adoc[AspectJ 5 Developer's Notebook]. There are
- also a number of enhancements to accompanying tools documented in the
- xref:../devguide/index.adoc[Developer's Guide]
-
- A full list of bugs fixed in AspectJ 5 can be found in
- https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&product=AspectJ&resolution=FIXED&chfieldfrom=2004-11-06&chfieldto=2005-12-20[bugzilla].
-
- [[_1_2_1]]
- = AspectJ 1.2.1
-
- All known P1 and P2 bugs have been fixed in this release. The
- 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] can be found on bugzilla. Some of the
- more significant bug fixes and enhancements include:
-
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=53981[53981] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=48990[48990]
- Optimisations added for the special cases of if(true) and if(false) in
- pointcut expressions.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=69319[69319] The Eclipse
- JDT compiler inside AspectJ has been upgraded to the Eclipse 3.0 release
- version.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=61572[61572] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=65319[65319] Error
- message now correctly produced when attempting to bind a pointcut formal
- in both a this() and a target() pointcut sub-expression.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=70619[70619] Conflicting
- declare precedence statements are now handled gracefully.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=42573[42573] Relative
- paths specified in .lst files are now resolved relative to the lst file
- location.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=57666[57666] Resource
- copying from jar files correctly handles duplicate manifests.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=61768[61768] Static
- inner types of an aspect can now be referenced within the body of
- inter-type declared methods in that aspect.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=62642[62642]
- after-throwing advice on a static initialization join point no longer
- swallows ExceptionInInitializer errors.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=67578[67578] AspectJ
- 1.2.1 correctly handles privileged access to members defined in a
- different package to the privileged aspect.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=67592[67592] The
- Object[] given in response to a getArgs() call on a JoinPoint object is
- now a value copy.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=68991[68991]
- Initialisers of inter-type declared fields now have field-set join
- points.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=69459[69459] A static
- inter-type method declaration is not allowed to hide an instance method.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=70794[70794] An
- inter-type declaration of an abstract method on a target type which is
- an interface must be declared as public.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=71372[71372] Calls can
- be made to private static methods of enclosing types from the body of
- around advice in an inner aspect.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=71377[71377] Join points
- are now correctly detected for calls to private methods and set/get of
- private fields within the body of around advice.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=71723[71723] A
- non-privileged inter-type declared method cannot call protected methods
- defined in parent classes of the target type.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=74238[74238] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=74245[74245] Specifying
- the -proceedOnError flag will now cause the compiler to attempt weaving
- even in the face of errors.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=76030[76030] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=54421[54421] String
- concatentation (using "+") is now allowed for the message associated
- with a declare error or warning statement.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=69011[69011] ajdoc now
- correctly handles types in the default package.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=36747[36747] The 1.2.1
- compiler supports an additional option, -showWeaveInfo, which will
- produce informational messages concerning the activity of the weaver.
- For example:
- +
- [source, text]
- ....
- Type 'tjp.Demo' (Demo.java:30) advised by around advice from 'tjp.GetInfo'
- (GetInfo.java:26) [RuntimeTest=true]
- ....
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=44191[44191] AspectJ
- 1.2.1 improves the error messages issued in many of the infamous "can't
- find type" scenarios.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=46298[46298] The code
- generated by ajc is now more easily digested by many decompilers (but
- you wouldn't want to do that anyway would you?? ;) ).
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=49743[49743] Performance
- optimisations in the AspectJ runtime library when using getSignature()
- and toString().
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=61374[61374] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=68494[68494] ajdoc now
- supports ".aj" files.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=72154[72154] 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
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=37020[37020] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=73369[73369] 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.
-
- [[_1_2]]
- = AspectJ 1.2
-
- All known P1 and P2 bugs have been fixed in this release. The
- https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&target_milestone=1.2[full
- list of fixes and enhancements] can be found on bugzilla. Some of the
- more significant bug fixes and enhancements include:
-
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=46347[46347] The ajc
- compiler now can read .class files from directories as well as zip files
- for bytecode weaving, via the new -inpath option.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=48080[48080] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=54819[54819] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=36430[36430] A new
- -Xreweavable option has been added which allows class files to be woven
- more than once.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=49250[49250]
- SoftException now supports getCause().
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=51320[51320] AspectJ 1.2
- now gives a compilation error if one of the non-statically determinable
- pointcut forms is used in a declare statement.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=53012[53012] Declaring
- precedence on a class type (rather than an aspect type) is now an error
- unless subtypes are included.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=36069[36069] The source
- information for inlined advice is now correct (using JSR 45).
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=34206[34206] (See also
- https://bugs.eclipse.org/bugs/show_bug.cgi?id=44587[44587]). Errors
- occuring during static initialisation of an aspect are now handled much
- more gracefully.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=41952[41952] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=42574[42574] -extdirs
- opion now recognises .zip files as well as .jar.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=48091[48091] 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).
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=45441[45441]
- IncompatibleClassChangeError at runtime when compiling with the -1.4
- option.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=54625[54625] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=54965[54965] Incremental
- compilation under AspectJ 1.2 is approximately twice as fast as under
- AspectJ 1.1.1.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=55134[55134] Incremental
- compilation now deletes any additional class files generated during the
- weave phase when the class file from whence they came is deleted.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=54621[54621] Incremental
- compilation will now detect changes (add, delete, modify) to class files
- in directories on the inpath and will include them in incremental
- compilation.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=54621[54621] Incremental
- compilation will now detect changes to jars on the inpath (and injars),
- and trigger a full build if a jar is modified.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=54622[54622] Incremental
- compilation will now detect changes to resources on the inpath.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=54618[54618] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=50200[50200] The
- aspectjrt.jar manifest file now has the correct (upper) case.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=49457[49457] No error
- given when overloading pointcuts, unless variables are bound.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=50776[50776] Compilation
- failure when overriding an inter-type declared method with a different
- throws clause.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=51919[51919] Polymorphic
- inter-type declaration fails.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=52464[52464] Declare
- warning coupled with inter-type declaration causes compiler crash.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=41125[41125] Variable
- names in the local variable table (for debugging) are now correctly
- preserved in all cases.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=43792[43792] Improved
- support for non-US locales (and significantly boosted weaver performance
- at the same time).
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=35636[35636] 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).
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=42711[42711] Super-types
- of parameters not recognised when calling priveleged methods.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=43972[43972] (See also
- https://bugs.eclipse.org/bugs/show_bug.cgi?id=45676[45676]). Incorrectly
- adding synthetic attribute to generated methods.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=45184[45184] External
- pointcut references not resolved when a named pointcut is used by a
- declare statement.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=46750[46750] Declare
- soft does not work inside a nested aspect.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=47754[47754] No error
- signalled when attempting to declare a static method on an interface
- using an inter-type declaration.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=48522[48522] Declare
- soft softens all exceptions at matched join points, not just the
- exception declared to be soft.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=49295[49295] AspectJ 1.2
- no longer supports inter-type constructor declarations on interfaces.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=51929[51929] Call to a
- protected super-type method within a advice body causes
- java.lang.VerifyError.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=52928[52928] Private
- members introduced via an interface are incorrectly visible within
- implementing classes.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=47910[47910] An output
- jar file created by AspectJ when using the -outjar option does not
- contain a valid manifest file.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=59909[59909] Thread
- local storage used to manage cflow stacks when available - improves
- cflow performance when working with a multi-threaded application.
-
- [[_1_1_1]]
- = AspectJ 1.1.1
-
- All known P1 and P2 bugs have been fixed in this release. The
- https://bugs.eclipse.org/bugs/buglist.cgi?product=AspectJ&target_milestone=1.1.1[full
- list of bug fixes] (49 in all) can be found on bugzilla.
-
- Some of the more significant bug fixes and enhancements in this release
- include:
-
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=40943[40943] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=39626[39626] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=40257[40257] Relative
- paths are now supported in ".lst" files.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=40771[40771] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=41254[41254] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=39462[39462] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=39479[39479] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=41175[41175] Declared
- exceptions were being lost on inter-type declarations made from binary
- aspects in an aspect library.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=41359[41359] 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.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=42539[42539] The "+"
- pattern was being ignored for type patterns used in throws clauses.
- Thanks to Keith Sader for the easy to reproduce bug report.
- * https://bugs.eclipse.org/bugs/show_bug.cgi?id=40807[40807] 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.
-
- [[_1_0_6]]
- = AspectJ 1.0.6
-
- This release contains mainly bug fixes for ajde and ajdoc.
-
- [[_1_0_6compiler]]
- == Compiler
-
- 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.
-
- [[_1_0_6ajde]]
- == AJDE
-
- *AJDE Framework, AJBrowser, and AJDE for Forte/NetBeans*
-
- 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.
-
- === AJDE for JBuilder
-
- JBuilder 7 is now supported. All known bugs have been fixed including:
-
- * https://aspectj.org/bugs/resolved?id=787[787] AJDE for JBuilder throws
- exception given non-existent file
- * https://aspectj.org/bugs/resolved?id=788[788] Label too small in error
- message
- * https://aspectj.org/bugs/resolved?id=789[789] Index-out-of-bounds
- exception in JBuilder AJDE
- * https://aspectj.org/bugs/resolved?id=792[792] Required libraries
- disappear from JBuilder 6
- * https://aspectj.org/bugs/resolved?id=795[795] Unable to compile open
- tools
- * https://aspectj.org/bugs/resolved?id=802[802] 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.
-
- [[_1_0_6ajdoc]]
- == Ajdoc
-
- * Fixed https://aspectj.org/bugs/resolved?id=790[790] aspect code
- comments suppressed by fix to bug 710
- * Known problems: https://aspectj.org/bugs/ajdoc
-
- '''''
-
- [[_1_0_5]]
- = AspectJ 1.0.5
-
- 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.
-
- * xref:#_1_0_5compiler[Compiler]
- * xref:#_1_0_5ajde[AJDE]
- * xref:#_1_0_5ajdoc[Ajdoc]
- * xref:#_1_0_5anttasks[Ant tasks]
-
- [[_1_0_5compiler]]
- == Compiler
-
- 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.
-
- [[_1_0_5ajde]]
- == AJDE
-
- 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.
-
- * 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.
-
- === AJDE for JBuilder
-
- 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.
-
- === AJDE for Forte/NetBeans
-
- 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.
-
- === AJBrowser
-
- * 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.
-
- [[_1_0_5ajdoc]]
- == Ajdoc
-
- Bug fixes:
-
- * https://aspectj.org/bugs/resolved?id=710[710 - compiler-generated
- constructor shown with class comment]
- * https://aspectj.org/bugs/resolved?id=712[712 - comments lost in aspect
- docs for methods or constructors declared on other types.]
- * https://aspectj.org/bugs/resolved?id=719[719 - poor support for @link,
- @see tags]
- * https://aspectj.org/bugs/resolved?id=742[742 - crash with @see tag]
- * https://aspectj.org/bugs/resolved?id=751[751 - error loading doclet
- resource]
-
- [[_1_0_5anttasks]]
- == Ant tasks
-
- Bug fixes:
-
- * https://aspectj.org/bugs/resolved?id=730[730 - document all supported
- ajc flags]
-
- '''''
-
- [[_1_0_4]]
- = AspectJ 1.0.4
-
- * xref:#_1_0_4compiler[Compiler]
- * xref:#_1_0_4ajde[AJDE]
- * xref:#_1_0_4ajdoc[Ajdoc]
- * xref:#_1_0_4taskdefs[Ant taskdefs]
- * xref:#_1_0_4doc[Documentation]
-
- [[_1_0_4compiler]]
- == Compiler
-
- * 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 _black thumb_ 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.
-
- === Incompatible changes
-
- 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 xref:porting.adoc#pre-1_0_4[porting
- notes].
-
- [[_1_0_4ajde]]
- == AJDE
-
- 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.
-
- === AJDE for JBuilder
-
- * Updates
- ** This is a bug fix release only.
-
- === AJDE for Forte/NetBeans
-
- * Updates
- ** NetBeans 3.3.1 is now supported in addition to NetBeans 3.2 and Forte
- CE 3.
- ** 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".
- ** The debugger can now be used if the project main class is set
- ("Project" menu -> "Set Project Main Class...").
- ** Numerous bugs have been fixed.
- * Known limitations
- ** Breakpoint setting does not work in the debugger.
- ** 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.
-
- === AJDE for Emacs
-
- * This is a bug fix release only.
-
- [[_1_0_4ajdoc]]
- == Ajdoc
-
- Ajdoc now runs under J2SE 1.4, but still requires the tools.jar from
- J2SE 1.3 be on the classpath.
-
- [[_1_0_4taskdefs]]
- == Ant tasks
-
- * 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. https://aspectj.org/bugs/resolved?id=682[682]: Throw
- BuildException if failonerror and ajdoc detects misconfiguration.
-
- [[_1_0_4doc]]
- == Documentation
-
- Added a 1-page quick reference guide. Improved javadoc documentation for
- the org.aspectj.lang package.
-
- '''''
-
- [[_1_0_3]]
- = AspectJ 1.0.3
-
- * xref:#_1_0_3compiler[Compiler]
- * xref:#_1_0_3taskdefs[Ant taskdefs]
-
- [[_1_0_3compiler]]
- == Compiler
-
- 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.
-
- [[_1_0_3taskdefs]]
- == Ant taskdefs
-
- Added support to the Ajc taskdef for the -source 1.4 and -X options
- generally.
-
- '''''
-
- [[_1_0_2]]
- = AspectJ 1.0.2
-
- 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.
-
- * xref:#_1_0_2compiler[Compiler]
- * xref:#_1_0_2ajde[AJDE]
- * xref:#_1_0_2ajdb[AJDB]
-
- [[_1_0_2compiler]]
- == Compiler
-
- * Official support for `-source 1.4` option to compile new
- https://java.sun.com/j2se/1.4/docs/guide/lang/assert.html[1.4
- assertions]. This makes ajc completely compatible with j2se-1.4.
- * Implementation of https://jcp.org/jsr/detail/45.jsp[JSR-45 Debugging
- Support for Other Languages] 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
- https://aspectj.org/jitterbug/aspectj-bugs/resolved?id=632[dynamic
- tests], with
- https://aspectj.org/jitterbug/aspectj-bugs/resolved?id=620[complicated
- local types in an around body], and with
- https://aspectj.org/jitterbug/aspectj-bugs/resolved?id=636[capturing
- proceed in a closure].
- * All but two
- (https://aspectj.org/jitterbug/aspectj-bugs/compiler?id=626[1],
- https://aspectj.org/jitterbug/aspectj-bugs/compiler?id=645[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
- https://java.sun.com/docs/books/vmspec/2nd-edition/html/ClassFile.doc.html#80128[the
- JVM Specification]; 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
- https://aspectj.org/jitterbug/aspectj-bugs/resolved?id=649[with javap]
- and https://aspectj.org/jitterbug/aspectj-bugs/resolved?id=646[with
- javac].
- * Changes required adding runtime classes, so please compile and run
- using the latest `aspectjrt.jar`
-
- [[_1_0_2ajde]]
- == AJDE
-
- 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.
-
- === AJDE for JBuilder
-
- * 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.
-
- === AJDE for Forte
-
- * Keyboard shortcuts were fixed to work with Mac OSX.
-
- [[_1_0_2ajdb]]
- === AJDB
-
- 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.
-
- '''''
-
- [[_1_0_1]]
- = AspectJ 1.0.1
-
- * xref:#_1_0_1compiler[Compiler]
- * xref:#_1_0_1ajde[AJDE]
- * xref:#_1_0_1ajdb[AJDB]
-
- [[_1_0_1compiler]]
- == Compiler
-
- 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
- https://aspectj.org/jitterbug/aspectj-bugs/resolved?id=610[this bug
- report] 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.
-
- [[_1_0_1ajde]]
- == AJDE
-
- 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.
-
- [[_1_0_1ajdb]]
- == AJDB
-
- 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
-
- [[_1_0_0]]
- = AspectJ 1.0.0
-
- * xref:#_1_0_0language[Language]
- * xref:#_1_0_0compiler[Compiler]
- * xref:#_1_0_0ajde[AJDE]
- * xref:#_1_0_0ajdoc[AJDoc]
- * xref:#_1_0_0taskdefs[Ant taskdefs]
-
- [[_1_0_0language]]
- == Language
-
- There were no language changes for this release.
-
- [[_1_0_0compiler]]
- == Compiler
-
- 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
- https://aspectj.org/jitterbug/aspectj-bugs/resolved?id=601[here] and
- https://aspectj.org/jitterbug/aspectj-bugs/resolved?id=595[here]
- * Jan Hannemann submitted a
- https://aspectj.org/jitterbug/aspectj-bugs/resolved?id=600[succint and
- clear bug report] 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.
-
- [[_1_0_0ajde]]
- == AJDE
-
- 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.
-
- === AJDE for JBuilder
-
- * 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.
-
- === AJDE for Forte
-
- * The AspectJ Browser now uses Forte's icons and distinguishes nodes by
- visibility
-
- === AJBrowser
-
- * Documentation for the browser is now available at
- https://aspectj.org/docs
-
- === Emacs Support: aspectj-mode and AJDEE
-
- * 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.
-
- [[_1_0_0ajdoc]]
- == AJDoc
-
- * 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.
-
- [[_1_0_0taskdefs]]
- == Ant taskdefs
-
- * Fork is not supported in the AJDoc taskdef
-
- [[_1_0rc3]]
- = AspectJ 1.0rc3
-
- [[_1_0rc3language]]
- == Language
-
- 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.
- https://aspectj.org/pipermail/users/2001/001289.html[More details...]
- * 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.
- https://aspectj.org/pipermail/users/2001/001258.html[More details...]
-
- [[_1_0rc3compiler]]
- == Compiler
-
- 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.
- https://aspectj.org/jitterbug/aspectj-bugs/resolved?id=551[More
- details...]
- * 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.
- https://aspectj.org/jitterbug/aspectj-bugs/resolved?id=580[More
- details...]
- * 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.
- https://aspectj.org/jitterbug/aspectj-bugs/resolved?id=574[More
- details...]
- * 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.
-
- [[_1_0rc3ajde]]
- == AJDE
-
- * 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.
-
- === AJDE for JBuilder
-
- * 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.
-
- === AJDE for Forte
-
- * Execution remembers main class.
- * The bug causing an error during a "Mode" and "Explorer" switch has
- been fixed.
-
- === AJBrowser
-
- * 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.
-
- === Emacs Support: aspectj-mode and AJDEE
-
- * 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.
-
- [[_1_0rc3ajdoc]]
- == AJDoc
-
- 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).
-
- [[_1_0rc3taskdefs]]
- == Ant taskdefs
-
- 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.
-
- '''''
-
- [[_1_0rc2]]
- = AspectJ 1.0rc2
-
- * xref:#_1_0rc2language[Language]
- * xref:#_1_0rc2compiler[Compiler]
- * xref:#_1_0rc2ajde[AJDE]
-
- [[_1_0rc2language]]
- == Language
-
- There are no language changes in this release. This is a bug fix release
- only.
-
- [[_1_0rc2compiler]]
- == Compiler
-
- A bug in handling inner type names that conflict with enclosing type
- names was fixed. Many error messages were improved.
-
- [[_1_0rc2ajde]]
- == AJDE
-
- * This is a bug fix release only.
-
- === AJDE for JBuilder
-
- * Changes:
- ** Fixed bug causing the output path to be ignored and .class files to
- be generated into the JBuilder install's "bin" directory.
- ** Fixed bugs in Browser listener causing NullPointerExceptions to be
- thrown if no node editor was present.
- ** Fixed bug permitting "-bcg" option to be passed to the compiler.
- ** Fixed bug preventing ajc from compiling all of the project source
- files when automatic package discovery was on (JBuilder Proffessional
- and Enterprise editions).
- ** If the "-preprocess" flag is used resulting source files will be
- placed in the project's "Working directory".
- * Limitations:
- ** "Automatic package discovery" mode is not supported in this release.
- ** The debugger has not seen much use and it's stability and performance
- is limited.
-
- === AJDE for Forte
-
- * Changes:
- ** Moved the "AspectJ" menu into the "Tools" menu in order to make it
- less intrusive.
- ** Added a "ctrl-alt-shift-F9" keyboard compile shortcut.
- * Limitations:
- ** 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.
- ** The debugger has not seen much use and it's stability and performance
- is limited.
-
- === AJBrowser
-
- * Changes:
- ** ...
- * Limitations:
- ** AJBrowser is currently an undocumented demonstration application. To
- use it type:
- +
- [source, text]
- ....
- ajbrowser <lst file1> <lst file2> ...
- ....
-
- === Emacs Support: aspectj-mode and AJDEE
-
- 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.
-
- '''''
-
- [[_1_0rc1]]
- = AspectJ 1.0rc1
-
- * xref:#_1_0rc1language[Language]
- * xref:#_1_0rc1compiler[Compiler]
- * xref:#_1_0rc1ajde[AJDE]
-
- [[_1_0rc1language]]
- == Language
-
- 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 link:progguide/semantics.html[the
- semantics section of the programming guide].
-
- 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.
-
- [[_1_0rc1compiler]]
- == Compiler
-
- 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.
-
- [[_1_0rc1ajde]]
- == AJDE
-
- * 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.
-
- === AJDE for JBuilder
-
- * Changes:
- ** Inline structural navigation annotations appear in the gutter of the
- editor and can be used to navigate associations such as advice and
- introduction.
- * Limitations:
- ** "Automatic package discovery" mode is not supported in this release.
- ** The debugger has not seen much use and it's stability and performance
- is limited.
-
- === AJDE for Forte
-
- * Changes:
- ** Support for Forte 3 and Netbeans 3.2 has been added.
- ** The module is now installed by default on the first use without
- having to go to the IDE options to enable it.
- * Limitations:
- ** 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.
- ** The debugger has not seen much use and it's stability and performance
- is limited.
-
- === AJBrowser
-
- * Changes:
- ** Build configuration file editor added.
- * Limitations:
- ** AJBrowser is currently an undocumented demonstration application. To
- use it type:
- +
- [source, text]
- ....
- ajbrowser <lst file1> <lst file2> ...
- ....
-
- === Aspectj-mode and AJDEE: AspectJ support in Emacs
-
- 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.
-
- '''''
-
- [[_1_0beta1]]
- = AspectJ 1.0beta1
-
- * xref:#_1_0beta1language[Language]
- * xref:#_1_0beta1compiler[Compiler]
- * xref:#_1_0beta1ajbrowser[AJBrowser]
- * xref:#_1_0beta1ajde[AJDE]
-
- [[_1_0beta1language]]
- == Language
-
- 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.
-
- [[_1_0beta1compiler]]
- == Compiler
-
- 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.
-
- [[_1_0beta1ajbrowser]]
- == AJBrowser
-
- * 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:
- ** In order to execute classes they must be available on the classpath
- that the browser is launched with.
-
- [[_1_0beta1ajde]]
- == AJDE
-
- * 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:
- ** 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.
-
- === AJDE for JBuilder
-
- * 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:
- ** The debugger has not seen much use and it's stability and performance
- is limited.
-
- === AJDE for Forte
-
- * Known bugs have been fixed.
- * Limitations:
- ** "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 are no keyboard compile/execute shortcuts.
- ** The debugger has not seen much use and it's stability and performance
- is limited.
-
- === Aspectj-mode and AJDEE: AspectJ support in Emacs
-
- 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.
-
- '''''
-
- [[_1_0alpha1]]
- = AspectJ 1.0alpha1
-
- 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.
-
- * xref:#_1_0alpha1language[Language]
- * xref:#_1_0alpha1compiler[Compiler]
- * xref:#_1_0alpha1documentation[Documentation]
- * xref:#_1_0alpha1ajdoc[AJDoc]
- * xref:#_1_0alpha1ant[Ant]
- * xref:#_1_0alpha1ajbrowser[AJBrowser]
- * xref:#_1_0alpha1ajde[AJDE]
-
- [[_1_0alpha1language]]
- == Language
-
- 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 xref:porting.adoc[porting notes] for this
- release are linked from the various language changes.
-
- === Pointcuts
-
- 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 xref:porting.adoc#_1_0a1-plural-to-singular[changed] 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
- xref:porting.adoc#_1_0a1-remove-receptions[eliminated]. 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 xref:porting.adoc#_1_0a1-fixing-state-access[changed the
- mechanism for accessing state] at join points, which has the benefit of
- making our treatment of signatures
- xref:porting.adoc#_1_0a1-no-subs-in-sigs[cleaner] and easier to read. As
- a part of this, the `instanceof` pointcut designator has now been
- xref:porting.adoc#_1_0a1-fixing-instanceof[split into two different
- pointcut designators], `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 xref:porting.adoc#_1_0a1-initializations[initializations pointcut]
- and xref:porting.adoc#_1_0a1-constructor-calls[constructor calls]
- pointcut.
-
- The little-used pointcuts xref:porting.adoc#_1_0a1-hasaspect[`hasaspect`]
- and xref:porting.adoc#_1_0a1-withinall[`withinall`] have been removed.
-
- The `returns` keyword is xref:porting.adoc#_1_0a1-user-defined-returns[no
- longer necessary] for user-defined pointcuts.
-
- Pointcuts may now be declared `static`, and
- xref:porting.adoc#_1_0a1-static-pointcuts[only static pointcuts] 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.
-
- === Type patterns
-
- Our treatment of xref:porting.adoc#_1_0a1-new-wildcards[* and ..] 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
- xref:porting.adoc#_1_0a1-subtypes-to-plus[spelled differently].
-
- === Advice
-
- Around advice is treated much more like a method, with a
- xref:porting.adoc#_1_0a1-around-returns[return value] and an optional
- xref:porting.adoc#_1_0a1-around-throws[throws clause].
-
- The advice precedence rules have been
- xref:porting.adoc#_1_0a1-advice-precedence[changed]. 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
- xref:porting.adoc#_1_0a1-after-returning[useless set of parentheses] when
- not using the return value.
-
- The `thisStaticJoinPoint` reflective object has been
- xref:porting.adoc#_1_0a1-this-static-join-point[renamed], and the
- `thisJoinPoint` object hierarchy has been
- xref:porting.adoc#_1_0a1-this-join-point[simplified].
-
- === Introduction and static crosscutting
-
- 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
- xref:porting.adoc#_1_0a1-plus-implements-extends[gotten rid of] 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
- xref:porting.adoc#_1_0a1-now-use-soft[around advice] that previously
- mucked with the exception checking system.
-
- === Aspects
-
- The "of each" modifiers have been
- xref:porting.adoc#_1_0a1-aspects[renamed]. 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+`.
-
- [[_1_0alpha1compiler]]
- == Compiler
-
- 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.
-
- === Known Limitations
-
- 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.
-
- [[_1_0alpha1documentation]]
- == Documentation
-
- 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 Primer has been split
- into a Programming Guide, covering the language, and a Development
- Environment Guide, covering the develompent tools. In addition,
- printable versions of both guides (in PDF) are finally included in the
- documentation package.
-
- [[_1_0alpha1ajdoc]]
- == Ajdoc
-
- 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).
-
- [[_1_0alpha1ant]]
- == Ant
-
- An Ajdoc task is now available. The Ajc ant task was improved to be
- completely back-compatible with the Javac task.
-
- [[_1_0alpha1ajbrowser]]
- == AJBrowser
-
- 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.
-
- [[_1_0alpha1ajde]]
- == AJDE
-
- === AJDE for JBuilder
-
- ==== Installation
-
- * Use the installer to place the "ajdeForJBuilder.jar" and
- "aspectjrt.jar" in to JBuilder's lib/ext directory.
-
- ==== Key Improvements
-
- * 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.
-
- ==== Known Bugs & Limitations
-
- * 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.
-
- === AJDE for Forte
-
- ==== Installation
-
- * 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.
-
- ==== Key Improvements
-
- * 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.
-
- ==== Known Bugs & Limitations
-
- * "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.
-
- === AJDE for Emacs
-
- 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.
-
- '''''
|