From os at aspectc.org Wed Jan 22 21:23:34 2025 From: os at aspectc.org (Olaf Spinczyk) Date: Wed, 22 Jan 2025 21:23:34 +0100 Subject: [aspectc-user] Announcement of AspectC++ 2.4 Message-ID: Dear AspectC++ users! The new release, AspectC++ 2.4, is now available for download at www.aspectc.org ... Version 2.4 (2025-01-22) This is an overview about the most important improvements. It is mostly a maintenance release without changes on the language level. For details refer to the subversion log and the bug tracker. * Added a new manual "First Steps", which describes the installation on AspectC++ on all supported platforms, important command line options, and a "Hello, World" example. * The ag++ frontend tool has been improved to handle dependency file generation with "-M..." correctly. It works nicely in combination with 'cmake' now. * Fixed various bugs in ac++, e.g. ... - a segfault on 32 bit machines, which was caused by a bug in the pointcut expression evaluation for attributes. - a segfault that could be caused under specific circumstances if a wrapped function threw an exception. - the problem that annotations with empty argument list caused the generation of invalid code. - bug 792: Execution advice for functions with GNU attribute noreturn * Support for more recent Clang library versions with Clang 19.1.6 being the latest. ac++ now also works with Clang libraries that are compiled in the Debug configuration. * Support for more recent back-end compilers, different platforms, and language standards - Avoid error message related to C++ 17 nested namespaces - Support for g++-13 and newer: clang does not support _Float* types natively, which caused parse problems in gcc header files. Now we check the gcc/clang version combination and inject type definitions into the generated code, which are parsed by clang while weaving. - Added optional module_name attribute to TUnit elements in the project model for future use. - Match expressions and signatures can now handle rvalue references - Implemented workaround to avoid parse errors in gnu system header files when new C23 floating point suffixes in literals, such as 0.0bf16, are used. - Fix for aarch64 problem for error while parsing math.h, which includes math-vector.h; in this file the aarch64-gcc-builtins __Float64x2_t and __Float32x4_t are used, as we run clang with gcc's preprocessor configuration; the fix defines these types as typedefs when needed. - Improved Phase1 parser: fixes problem with using declarations for operator functions, e.g. in boost headers. * Revived Windows port and added *experimental* support for MacOS/arm64 - Fixed code generation and test cases to improve MacOS compatibility - Code and Makefile fixes needed for successful Windows build. - Test programs are now compatible with Windows/MinGW, e.g. 'CallBuiltinOperator' now behaves deterministically - Added Makefile variable COMPILE_TARGET for optionally passing a target triple - Modified example 'profiling': it now usesstd::chrono for nano second scale measurements instead of the non-portable inline assembler statement that created an rdtsc x86 instruction * Internal Refactoring - Handling transformation of advice code during token scanning of phase 2 instead of phase 1. This improves error messages. - Separated Phase 1 syntax and semantic analysis. - Avoid dependencies in classes that should be front-end-agnostic. - Moved some functions into the ACModel library that could be useful for other tools. - Simplified implementation of the diagnostics for problems related to the 'args' pointcut function and short-circuit evaluation of built-in operators. - Split the huge CodeWeaver class into two. - Added configurable helper functions to ACFileID in order to reduce the number of #ifdefs related to clang version differences. - Modernized dependency file generation in the Makefiles. * Reduced implementation dependencies on the Puma library (not maintained). - Completely avoid dependency to Puma in ACModel. -Puma::SysCall is no longer used. Many functions could be replace bystd::filesystem. - Eliminated Puma/lexertl-dependency from PointCutExprParser class. - ReplacedPuma::Array bystd::vector and some uses of c-style strings by c++ strings. - Added file locking functionality into ACModel library so that the model reader and writer have a cleaner interface and Puma dependencies are further reduced. - ReplacedPuma::VerboseMgr with new Logger class with similar interface to reduce Puma dependencies. * Fixed formatting problem of the command help text. I hope you enjoy the new features. For bug reports, please use http://www.aspectc.org/bugzilla/. If you don't have an account, yet, and want to report a bug, please contact me. Best regards, Olaf Spinczyk -------------- next part -------------- An HTML attachment was scrubbed... URL: