[aspectc-user] Announcement of AspectC++ 1.0pre1
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
* 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
* 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
* 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
* 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.
More information about the aspectc-user