[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[aspectj-users] [abc] abc version 1.1.0 released
|
The abc team is pleased to announce the immediate availability of abc
version 1.1.0, a release that includes several major development
efforts, as well as many bugfixes and several extensibility enhancements.
Among the highlights of this release are:
* tracematches: advice triggered by patterns over the whole computation
history
* open modules: giving the programmer control over information hiding in
aspects. For a sizeable example of open module use, see
http://aspectbench.org/documents/omants.tar.gz
* cflow with no cost: interprocedural analysis to eliminate runtime
overheads of cflow in most cases
A full changelog can be found below.
As usual, the release can be downloaded from
http://aspectbench.org/download
Cheers,
Pavel (on behalf of the abc team)
Changelog for users of abc:
- Implemented trace match extension. Run this with 'java abc.main.Main
-ext abc.tm'. Trace matches are a mechanism for running advice when
certain properties hold in the execution trace. The design and
implementation is presented in our OOPSLA 2005 paper, available from
our website.
- Implemented open modules extension. Run this with 'java abc.main.Main
-ext abc.om'. Our implementation is an extension of Jonathan Aldrich's
work to AspectJ, but includes various novel ideas. It is described in
detail in tech report abc-2005-2, available from our website.
- Included the interprocedural analyses described in our PLDI'05 paper
in the main abc release. They can be run by specifying the option -O3.
Note that if you give this option, you will also have to provide the
-main-class <Class> option as a starting point for the control flow
analysis.
- The implementation of advice precedence (which was subtly broken in previous
releases) has been fixed. In MethodAdviceList, advice lists are now
topologically sorted according to precedence. The implementation detects
when there is nondeterminacy in the ordering. Many non-trivial AspectJ
programs are ambiguous in this way, so by default the ambiguities are
not reported. To turn them on, use the flag "-debug warnPrecAmbiguity=true".
We may promote this to a proper flag in future releases, as it is
often useful in debugging AspectJ code.
Changelog for extenders of abc:
- If your extension changes the precedence order, or introduces a new
kind of advice (other than before/after/around), you should override
the getPrecedence method in abcExtension. An example can be found in
the tracematch extension abc.tm.
- If you wish to restrict the matching process by adding conjuncts to
existing residue generation, override residueConjuncts in AbcExtension.
This provides a way for implementing various aspect interface features
via AspectJ. An example can be found in the open modules extension abc.om.
- The signature of Pointcut.matchesAt has changed to take a MatchingContext
that wraps up its previous set of parameters (WeavingEnv, SootClass,
SootMethod,ShadowMatch). This makes it possible to write extensions
where matching depends on a richer context than the standard AspectJ
one. An example can be found in the open modules extension abc.om.