You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

README-1.6.11.adoc 4.0KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. = AspectJ 1.6.11
  2. _© Copyright 2010-2011 Contributors. All rights reserved._
  3. The full list of resolved issues in 1.6.11 is available
  4. 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]
  5. _Release info: 1.6.11 available 15-Mar-2011_
  6. == Notable Changes
  7. === RC1 - Our own XML parser
  8. Due to the way AspectJ loads one of the standard XML parsers (for
  9. processing aop.xml) it was possible to get into a deadlock situation. To
  10. avoid this completely we now have our own XML parser inside for
  11. processing this files. It is basic but should support all the known
  12. syntax we have for aop files. To use it instead of the default (if you
  13. are encountering the deadlock) you need to specify this system property:
  14. org.aspectj.weaver.loadtime.configuration.lightxmlparser=true.
  15. '''''
  16. === M2 - Multithreaded world access
  17. The weaver is backed by a representation of types called a world.
  18. Traditionally the worlds have supported single threads - and that is how
  19. they are used when doing compile time weaving or load time weaving.
  20. However in some configurations, e.g. pointcut matching under Spring, a
  21. single world instance may be getting accessed by multiple threads at the
  22. same time. Under
  23. https://bugs.eclipse.org/bugs/show_bug.cgi?id=337855[bug337855] some
  24. changes have been made to better support this kind of configuration.
  25. === M2 - various attribute deserialization issues
  26. In 1.6.9 we made some radical changes to the serialized form. It turns
  27. out some of the deserialization code wasn't handling these new forms
  28. quite right. This would manifest as an IllegalStateException or
  29. IndexOutOfBoundsException or similar, during attribute unpacking. These
  30. issues have now all been sorted out in 1.6.11.M2.
  31. === M2 - further optimizations in model for AJDT
  32. More changes have been made for users trying out the
  33. -Xset:minimalModel=true option to try and reduce the memory used in
  34. their Eclipse/AJDT configurations. This option is discussed in detail
  35. http://andrewclement.blogspot.com/2010/07/ajdt-memory-usage-reduction.html[here].
  36. It now saves even more memory. Also, previously the amount of memory it
  37. recovered depended on compilation order (which the user has no control
  38. over), but now it is insensitive to ordering and should always recover
  39. the same amount across builds of the same project. With a bit more
  40. positive feedback on this option, it will become the default under AJDT.
  41. === M2 - spaces in path names can cause problems
  42. AspectJ had problems if the paths it was being passed (e.g. aspectpath)
  43. included spaces. This is bug
  44. https://bugs.eclipse.org/bugs/show_bug.cgi?id=282379[282379] and has now
  45. been fixed.
  46. '''''
  47. === M1 - Annotation removal
  48. Traditionally AspectJ has taken an additive approach, where
  49. methods/fields/supertypes/annotations can only be added to types. Now,
  50. chaos would likely ensue if we allowed removal of supertypes, methods,
  51. etc, but we are seeing an increasing number of requirements to do more
  52. with annotations. What kinds of thing? Basically remove existing
  53. annotations, or modify existing annotations by changing their values.
  54. 1.6.11 includes a new piece of syntax that we are thinking might be
  55. appropriate for one of these scenarios. 1.6.11 supports this:
  56. [source, java]
  57. ....
  58. declare @field: int Foo.i: -@Anno;
  59. ....
  60. Notice the '-' in front of the annotation, meaning 'removal'. The whole
  61. construct means 'remove the @Anno annotation from the int field called i
  62. in type Foo'. It is not yet supported on the other forms of declare @.
  63. === M1 - Intertype innertypes
  64. More work has gone into this feature. It was originally added in 1.6.9
  65. but the inability to use it with binary weaving greatly reduced the
  66. usefulness. Fixes have gone into 1.6.11 to support binary weaving. What
  67. do we mean by intertype innertypes? Here is an example:
  68. [source, java]
  69. ....
  70. class Foo {
  71. public void m() {
  72. System.out.println(Inner.i);
  73. }
  74. }
  75. aspect X {
  76. public static class Foo.Inner {
  77. static int i = 34;
  78. }
  79. }
  80. ....
  81. Only static inner types are supported.