[aspectc-user] Announcement of AspectC++ 0.8pre1
Olaf Spinczyk
Olaf.Spinczyk at informatik.uni-erlangen.de
Fri Feb 6 16:25:10 CET 2004
Hi,
after a much too long period without new ac++ releases we now uploaded
the first pre-release of version 0.8 (0.8pre1). It can be download from
www.aspectc.org. Binaries for Linux and Win32 as well as the source code
(GPL license) are available. Binaries for MacOS X and Solaris can be
compiled on demand. We also updated the manual collection.
The new version comes with the following new features (excerpt from the
Changelog):
Version 0.8pre1 (2004-01-28)
* improved the implementation of the cflow() pointcut
function: There can now be an arbitrary number of
cflows in every pointcut expression. They can be combined with
the usual operators for and, or, and not. The cflow arguments
can still have no context variables or runtime conditions. The
generated code is exception-safe but should not be used in
multithreaded environments.
* examples/CFlow/CFlow.ah: made CFlow example a little bit more
complex to show the feature
* changed code generation for the advice activation code. All
becomes part of a class now. For ordinary call advice the
class becomes a local class and, thus, has the same access
rights as the enclosing function
* access control by the C++ compiler is no longer inhibited by
replacing every "private" or "protected" by "public". The
member protections now remain untouched by the weaver. All
aspects are priviledged, they become friends of all other
classes and aspects. This is not the final solution.
* improved code generation for consts and typedefs as return
types in functions with advice
* strongly changed the implementation of dynamic type checks,
now we can check for types which are unknown in a
translation unit.
* finished implementation of that and target functions and their
combination to complex conditions
* support for advice for calls during the initialization of
globals and in baseclass initializer lists of constructors
* changed code generation to support advice activation from
forward joinpoints, i.e. joinpoints with code defined in
include files that are included by the affecting aspect
header. Include cycles are avoided/handled.
* Changed code generation: advice and aspectof functions now
remain members of the aspect class. If they require a type
JoinPoint or an object tjp, they are transformed into
template functions.
* made the wrapped function of an execution join point always
inline and const or volatile according to its type.
* changed the code generation at execution join points -
__exec_old.. is never virtual now. Furthermore changed the
code that invokes the original function at execution join
points: a qualified name is not used for method invocations
anymore.
The invocation of the original function at call join points
is also changed: qualified names are only used if the method
was virtual and the original call was qualified, too.
=> now the 'proceed()' operation really performs the
original action.
* added the --gnu-2.95 option, which is needed when g++ 2.9x
header files are parsed. pumag++conf.pl automatically adds
the option to the generated config file if it detects a g++
2.x compiler.
* a lot of bug fixes
- with wrong signatures of functions defined in a namespace
- reimplemented IncludeExpander, the old one didn't expand
in some case which caused a wrong definition order. For
example, if an aspect header included a header file for
which it defines advice.
- fixed several name mangling problems, e.g. name mangling
ambiguity with CV qualifiers, destructor name mangling
- fixed seg fault after error some messages
- fixed problem with context variables in advice code, they
(more than one) can now be used in arbitrary order
- fixed problem that '= =' was generated for default
argument declarations.
- fixed problem of missing space when an anonymous
argument without declarators has to be generated
- fixed problem that in some cases %anon was generated.
- fixed problem that advice code functions got identical
names when the advice was defined in an abstract base aspect
and more than one derived aspect affected the same join
point
* updated the manuals regarding changes in cflow, that, target,
cflow example, versioning scheme, unimplemented features and
some g++ back-end specifics; fixed font in manuals
* further improved the compilation speed
As you can see most of these new features are related to the code
generation and AspectC++ language features. Further parser improvements
can be expected in the 0.8 release, which is scheduled for the first
half of march.
Please continue to help us improve the ac++ implementation by entering
bug reports at http://www.aspectc.org/bugzilla or simply asking
questions on this mailing list.
Best regards,
Olaf Spinczyk
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/x-pkcs7-signature
Size: 3142 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://www.aspectc.org/pipermail/aspectc-user/attachments/20040206/9bd72519/attachment.bin>
More information about the aspectc-user
mailing list