[aspectc-user] Announcement of AspectC++ 2.4
    Olaf Spinczyk 
    os at aspectc.org
       
    Wed Jan 22 21:23:34 CET 2025
    
    
  
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: <http://www.aspectc.org/pipermail/aspectc-user/attachments/20250122/ce1a9047/attachment.htm>
    
    
More information about the aspectc-user
mailing list