123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- = AspectJ 1.6.11
-
- _© Copyright 2010-2011 Contributors. All rights reserved._
-
- The full list of resolved issues in 1.6.11 is available
- https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced;bug_status=RESOLVED;bug_status=VERIFIED;bug_status=CLOSED;product=AspectJ;target_milestone=1.6.11;[here]
-
- _Release info: 1.6.11 available 15-Mar-2011_
-
- == Notable Changes
-
- === RC1 - Our own XML parser
-
- Due to the way AspectJ loads one of the standard XML parsers (for
- processing aop.xml) it was possible to get into a deadlock situation. To
- avoid this completely we now have our own XML parser inside for
- processing this files. It is basic but should support all the known
- syntax we have for aop files. To use it instead of the default (if you
- are encountering the deadlock) you need to specify this system property:
- org.aspectj.weaver.loadtime.configuration.lightxmlparser=true.
-
- '''''
-
- === M2 - Multithreaded world access
-
- The weaver is backed by a representation of types called a world.
- Traditionally the worlds have supported single threads - and that is how
- they are used when doing compile time weaving or load time weaving.
- However in some configurations, e.g. pointcut matching under Spring, a
- single world instance may be getting accessed by multiple threads at the
- same time. Under
- https://bugs.eclipse.org/bugs/show_bug.cgi?id=337855[bug337855] some
- changes have been made to better support this kind of configuration.
-
- === M2 - various attribute deserialization issues
-
- In 1.6.9 we made some radical changes to the serialized form. It turns
- out some of the deserialization code wasn't handling these new forms
- quite right. This would manifest as an IllegalStateException or
- IndexOutOfBoundsException or similar, during attribute unpacking. These
- issues have now all been sorted out in 1.6.11.M2.
-
- === M2 - further optimizations in model for AJDT
-
- More changes have been made for users trying out the
- -Xset:minimalModel=true option to try and reduce the memory used in
- their Eclipse/AJDT configurations. This option is discussed in detail
- https://andrewclement.blogspot.com/2010/07/ajdt-memory-usage-reduction.html[here].
- It now saves even more memory. Also, previously the amount of memory it
- recovered depended on compilation order (which the user has no control
- over), but now it is insensitive to ordering and should always recover
- the same amount across builds of the same project. With a bit more
- positive feedback on this option, it will become the default under AJDT.
-
- === M2 - spaces in path names can cause problems
-
- AspectJ had problems if the paths it was being passed (e.g. aspectpath)
- included spaces. This is bug
- https://bugs.eclipse.org/bugs/show_bug.cgi?id=282379[282379] and has now
- been fixed.
-
- '''''
-
- === M1 - Annotation removal
-
- Traditionally AspectJ has taken an additive approach, where
- methods/fields/supertypes/annotations can only be added to types. Now,
- chaos would likely ensue if we allowed removal of supertypes, methods,
- etc, but we are seeing an increasing number of requirements to do more
- with annotations. What kinds of thing? Basically remove existing
- annotations, or modify existing annotations by changing their values.
- 1.6.11 includes a new piece of syntax that we are thinking might be
- appropriate for one of these scenarios. 1.6.11 supports this:
-
- [source, java]
- ....
- declare @field: int Foo.i: -@Anno;
- ....
-
- Notice the '-' in front of the annotation, meaning 'removal'. The whole
- construct means 'remove the @Anno annotation from the int field called i
- in type Foo'. It is not yet supported on the other forms of declare @.
-
- === M1 - Intertype innertypes
-
- More work has gone into this feature. It was originally added in 1.6.9
- but the inability to use it with binary weaving greatly reduced the
- usefulness. Fixes have gone into 1.6.11 to support binary weaving. What
- do we mean by intertype innertypes? Here is an example:
-
- [source, java]
- ....
- class Foo {
- public void m() {
- System.out.println(Inner.i);
- }
- }
-
- aspect X {
- public static class Foo.Inner {
- static int i = 34;
- }
- }
- ....
-
- Only static inner types are supported.
|