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

Olaf Spinczyk Olaf.Spinczyk at informatik.uni-erlangen.de
Wed Oct 26 18:25:07 CEST 2005


the new AspectC++ release 1.0pre1 is now available from www.aspectc.org.
We uploaded binaries for Linux, Solaris, MacOS X and Win32 (all
statically linked). The sources and woven sources (for compilation
without ac++) are also available.

The new version comes with the following new features:

Version 1.0pre1 (2005-10-26)

         Weaver Changes (ac++)

         * fixed back-end compilation problem in the case of
           execution advice for functions that are only declared outside
           the project

         * fixed problem with args pointcut function
           evaluation that sometimes crashed when functions the variable
           argument lists were compared with the arguments of args

         * no more #line directives with empty filename. This confuses
           the gdb.

         * generate guard around predefined pointcut functions
           to avoid problems with self-inclusion of the cc file

         * avoid a lot of trouble with include cycles:
           - code advice can longer cause include cycles, only intros
           - for intros in base aspects only the base aspect header is
           - for intros into cc files the include is no longer generated
             in the header file, which contains the target class
           - don't generate aspect header includes for cflow-triggers
           - added test programs for the include cycle problem
           - added a section about the problem in the manual

         * added and documented the --gen_size_type option for

         * modified the code in order to be accepted by g++ 4.0.x

         * added missing include guards in some example aspect headers

         * started the new introduction implementation

         * fixed advice for function calls on references

         * reimplemented the generation of tjp->proceed() functions.
           proceed() can now be inlined. Thereby, around advice with
           proceed() is now as efficient as before/after advice.

         * fixed memory management problems in the match expression
           evaluation classes and fixed matching of ... in template
           argument lists.

         * fixed the important bug #242, which caused include cycle
           problems if an aspect defines an introduction *and* code
           advice for the same class.

         * fixed call advice for operator--, operator++, and operator[].

         * fixed the match expression parser for matching operator<<

         g++ Front End Changes (ag++)

         * added the --Xcompiler and --Xweaver options to avoid
           ambiguities between ac++ and g++ options like
           -pipe or -p"ipe"

         * made temporary file names unique

         Parser Changes (Puma)

         * Makefile improvements
           - separate directories for woven code in debug and release
           - fixed problems with dependencies
           - use the new ac++ option --gen_size_type for
           - added the AC_OPTFLAGS makefile variable. It can be used for
             additional ac++ options.

         * added support for __VA_ARGS__ in variadic macros

         * implemented "typeid"

         * fixed the calculation of enumerator values. In case of
           dependencies between enumerator in the same enumeration
           wrong values were calculated before this fix.

         * added support for virtual inheritance in the name lookup

         * modified the definition of __null (gcc extension), to cope
           with more restrictive rules in the overload resolution

         * fixed problem with duplicate expansion of self-referential
           macros that are used in macro arguments

         * slightly improved the preprocessor performance: operator
           symbols, brackets, etc. are no longer checked for being
           macros. Unnecessary conversion from string to token list
           and vice versa are avoided.

         * made Puma ready for g++ 4.0.x

         * continued with doxygen-based documentation of the most
           important Puma classes -> "make doxygen"

         * fixed function call resolution problem in conjunction with
           qualified names that contain template names.

         * fixed look-ahead problem in the C++ syntax implementation
           (Bug 262)

         * implemented support for the gcc-specific statement expression

         * fixed parse problems with enumerators in templates

         * improved function signature generation (needed by ac++)

         * fixed problems with overload resolution in the case of
           functions with default argument values

         * fixed function call resolution problems in case of static
           member functions that are called on qualified object pointers

         * fixed the algorithm which determines if two types are

         * forward declarations of templates are now linked with the
           definition. This caused many problems with template parsing.

         * fixed problem with the evaluation of construct expressions

         * fixed various other small bugs #243 - #246

As you can see, this new release contains many many fixes and 
improvements. Most notable are the fixes related to the "include cycle" 
problem, which was a fundamental problem that every serious AspectC++ 
programmer had experienced sooner or later. Furthermore, this release 
can much better deal with real world code. For instance, ag++ can now 
compile the ACE library and its thousands of test and example programs.

We will try to have shorter release intervals in the future. Sorry for 
the long time without improvements.

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.

Have fun,

Olaf Spinczyk

More information about the aspectc-user mailing list