This file lists the major changes and improvements made to AspectC++, Ag++, and the PUMA framework. 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 included - for intros into cc files the include is no longer generated in the header file, which contains the target class definition - don't generate aspect header includes for cflow-triggers anymore - 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 cross-compilation * 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 mode - fixed problems with dependencies - use the new ac++ option --gen_size_type for cross-compilation - 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 implementation. * 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 syntax * 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 "similar" * 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