Skip to main content

[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.





Back to the top