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.5.3.adoc 4.2KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. = AspectJ 5 v1.5.3 Readme
  2. _© Copyright 2006 Contributors. All rights reserved._
  3. This release includes a number of bug fixes and enhancements (over 80).
  4. The full list of resolved issues can be found with
  5. https://bugs.eclipse.org/bugs/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=AspectJ&target_milestone=1.5.3&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=[this
  6. bugzilla query].
  7. Notable changes since the 1.5.2 release include: +
  8. == Pipeline compilation - https://bugs.eclipse.org/bugs/show_bug.cgi?id=146781[146781]
  9. Until this release, the memory profile for AspectJ looked like this
  10. (time is along the X axis, memory usage is the Y axis)
  11. [source, text]
  12. ....
  13. /\_
  14. / \_
  15. / \_
  16. / \_
  17. / \_
  18. / \
  19. ....
  20. The first phase (as we go up and up and up) is the compilation of every
  21. file - when the peak is reached we then start weaving files one by one,
  22. discarding them once woven and dumped to disk. In 1.5.3 we don't compile
  23. everything up front - we compile and weave files one at a time. Giving
  24. us this profile:
  25. [source, text]
  26. ....
  27. /\ /\ /\
  28. / \/ \/ \
  29. / \
  30. ....
  31. Each peak is compiling a file, then it is woven, dumped to disk and the
  32. space recovered (the trough) - we then move onto the next file. What
  33. does this mean? The peaks are far far lower, so you need far less memory
  34. to compile a project. For example, I have a 1000file project, affected
  35. by aspects at >750 join points. For given values of Xmx, here are the
  36. times taken to compile it (on the command line) with AspectJ1.5.2:
  37. [source, text]
  38. ....
  39. Xmx Time
  40. 512M 33seconds
  41. 256M 40seconds
  42. 220M 116seconds
  43. 212M OutOfMemory
  44. ....
  45. The times gradually increase as the memory is reduced because the VM
  46. starts to thrash in garbage collection. Here are the results for
  47. AspectJ1.5.3:
  48. [source, text]
  49. ....
  50. Xmx Time
  51. 512M 33s
  52. 256M 33s
  53. 180M 33s
  54. 140M 33s
  55. 100M 35s
  56. 80M 43s
  57. 70M OutOfMemory
  58. ....
  59. So with 1.5.3, it isn't until around 80M that the VM starts to struggle
  60. with memory. These savings will affect any code built from source: on
  61. the command line, in Ant, or in AJDT. It will not affect binary weaving
  62. - that is a future enhancement.
  63. == Serviceability - https://bugs.eclipse.org/bugs/show_bug.cgi?id=150487[150487]
  64. As AspectJ grows in popularity, we find that it is becoming more
  65. difficult for users to come up with the small testcases that recreate
  66. problems - the usage scenarios for AJ are becoming more and more
  67. sophisticated. To help us work on problems in these scenarios we have
  68. added a tracing and logging framework and improved our dump mechanism.
  69. These traces and dumps can be attached to bug reports. In AspectJ 1.5.3
  70. we have included some xref:../pdguide/index.adoc[documentation]
  71. on how to configure these new features. Don't be surprised if you get
  72. asked for an AspectJ trace on a future bug report!
  73. == LTW enhancements
  74. === User and System Configuration Files - https://bugs.eclipse.org/bugs/show_bug.cgi?id=149289[149289]
  75. The `-outxml` option now generates a file named `META-INF/aop-ajc.xml`.
  76. This no longer clashes with a user defined `META-INF/aop.xml`
  77. configuration file. Both file names along with an OSGi-friendly
  78. `org/aspectj/aop.xml` (which can also be signed) are used by default to
  79. configure LTW.
  80. === Weaving Concrete Aspects Defined in aop.xml - https://bugs.eclipse.org/bugs/show_bug.cgi?id=132080[132080]
  81. Concrete aspects defined using aop.xml are now exposed for weaving.
  82. == Pertypewithin enhancement - https://bugs.eclipse.org/bugs/show_bug.cgi?id=123423[123423]
  83. It is now possible to ask an instance of a ptw aspect which type it is
  84. 'attached' to. The method:
  85. [source, java]
  86. ....
  87. String getWithinTypeName()
  88. ....
  89. can be called on an aspect and will return the full qualified name of
  90. the type (eg. "com.foo.MyClass")
  91. '''''
  92. For information on bug fixes in AspectJ 5 v1.5.3, see the
  93. link:changes.html[changes] document.