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-1611.html 4.6KB

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