[aspectc-user] Announcement of AspectC++ 0.8pre1

Olaf Spinczyk Olaf.Spinczyk at informatik.uni-erlangen.de
Fri Feb 6 16:25:10 CET 2004


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 

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

	* 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