123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119 |
- = AspectJ 5 v1.5.3 Readme
-
- _© Copyright 2006 Contributors. All rights reserved._
-
- This release includes a number of bug fixes and enhancements (over 80).
- The full list of resolved issues can be found with
- 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
- bugzilla query].
-
- Notable changes since the 1.5.2 release include: +
-
- == Pipeline compilation - https://bugs.eclipse.org/bugs/show_bug.cgi?id=146781[146781]
-
- Until this release, the memory profile for AspectJ looked like this
- (time is along the X axis, memory usage is the Y axis)
-
- [source, text]
- ....
- /\_
- / \_
- / \_
- / \_
- / \_
- / \
- ....
-
- The first phase (as we go up and up and up) is the compilation of every
- file - when the peak is reached we then start weaving files one by one,
- discarding them once woven and dumped to disk. In 1.5.3 we don't compile
- everything up front - we compile and weave files one at a time. Giving
- us this profile:
-
- [source, text]
- ....
- /\ /\ /\
- / \/ \/ \
- / \
- ....
-
- Each peak is compiling a file, then it is woven, dumped to disk and the
- space recovered (the trough) - we then move onto the next file. What
- does this mean? The peaks are far far lower, so you need far less memory
- to compile a project. For example, I have a 1000file project, affected
- by aspects at >750 join points. For given values of Xmx, here are the
- times taken to compile it (on the command line) with AspectJ1.5.2:
-
- [source, text]
- ....
- Xmx Time
- 512M 33seconds
- 256M 40seconds
- 220M 116seconds
- 212M OutOfMemory
- ....
-
- The times gradually increase as the memory is reduced because the VM
- starts to thrash in garbage collection. Here are the results for
- AspectJ1.5.3:
-
- [source, text]
- ....
- Xmx Time
- 512M 33s
- 256M 33s
- 180M 33s
- 140M 33s
- 100M 35s
- 80M 43s
- 70M OutOfMemory
- ....
-
- So with 1.5.3, it isn't until around 80M that the VM starts to struggle
- with memory. These savings will affect any code built from source: on
- the command line, in Ant, or in AJDT. It will not affect binary weaving
- - that is a future enhancement.
-
- == Serviceability - https://bugs.eclipse.org/bugs/show_bug.cgi?id=150487[150487]
-
- As AspectJ grows in popularity, we find that it is becoming more
- difficult for users to come up with the small testcases that recreate
- problems - the usage scenarios for AJ are becoming more and more
- sophisticated. To help us work on problems in these scenarios we have
- added a tracing and logging framework and improved our dump mechanism.
- These traces and dumps can be attached to bug reports. In AspectJ 1.5.3
- we have included some xref:../pdguide/index.adoc[documentation]
- on how to configure these new features. Don't be surprised if you get
- asked for an AspectJ trace on a future bug report!
-
- == LTW enhancements
-
- === User and System Configuration Files - https://bugs.eclipse.org/bugs/show_bug.cgi?id=149289[149289]
-
- The `-outxml` option now generates a file named `META-INF/aop-ajc.xml`.
- This no longer clashes with a user defined `META-INF/aop.xml`
- configuration file. Both file names along with an OSGi-friendly
- `org/aspectj/aop.xml` (which can also be signed) are used by default to
- configure LTW.
-
- === Weaving Concrete Aspects Defined in aop.xml - https://bugs.eclipse.org/bugs/show_bug.cgi?id=132080[132080]
-
- Concrete aspects defined using aop.xml are now exposed for weaving.
-
- == Pertypewithin enhancement - https://bugs.eclipse.org/bugs/show_bug.cgi?id=123423[123423]
-
- It is now possible to ask an instance of a ptw aspect which type it is
- 'attached' to. The method:
-
- [source, java]
- ....
- String getWithinTypeName()
- ....
-
- can be called on an aspect and will return the full qualified name of
- the type (eg. "com.foo.MyClass")
-
- '''''
-
- For information on bug fixes in AspectJ 5 v1.5.3, see the
- link:changes.html[changes] document.
|