Version 7.0

Version 7.0 marks the final proprietary release of the EDG C++ front end
and its transition to an open source model.

This release includes the following new C23, C++20, C++23, and C++26 features:


- C23:   New tag compatibility rules (EDGcpfe/25951,EDGcpfe/29043)
- C23:   Empty initializers (EDGcpfe/25946,EDGcpfe/29042)
- C23:   auto-type variables (EDGcpfe/29041)
- C++20: Matching operator!= disables rewritten operator== candidates
         (EDGcpfe/25497,EDGcpfe/26173,EDGcpfe/26947,EDGcpfe/27563,
          EDGcpfe/28495)
- C++23: Un-deprecation of volatile compound assignments
         (EDGcpfe/25502,EDGcpfe/25847)
- C++23: Explicit object parameter for assignment and comparison
         (EDGcpfe/25524)
- C++26: Updated reflection support (EDGcpfe/28999)

Version 7.0 includes several significant improvements in handling
complexity and/or performance. The constant expression interpreter has
been restructured to use a parallel invocation stack instead of direct
recursion within the interpreter, avoiding call stack overflow
failures (EDGcpfe/29014). Many builtin functions are now processed
lazily when they are encountered in the source instead of being
predeclared, reducing the start-up time for the front end
(EDGcpfe/29033). Finally, the performance of CTAD involving template
template parameters has been improved (EDGcpfe/29001).

Version 7.0 updates built-in function support to the final release of
Clang version 22.1.0 (the signatures in the 6.9 release were based on
the RC1 release candidate) and to Clang version 23.

Building the front end now requires support for C++14 features; it
previously only required C++11 support.  The earliest versions of
compilers known to build the front end successfully are:

    g++:    5.2.0
    clang:  3.4
    MSVC:   VS 2017 (build 15.0 or later)

The front end can be self-compiled with a C-generating back end
version for platforms that lack a native C++ compiler.  We do not use
exception handling or RTTI, so those can be disabled to produce more
efficient code.

We use only the C subset of the C++ standard library, so if your code
uses the C++ standard library you don’t have to worry about possible
collisions between incompatible versions.

As usual, we have fixed bugs, added many minor features, and continued to
improve our various compatibility modes.  Full details can be found in
the src/Changes file. We are no longer providing a separate Changes file
for the release because the download no longer requires a login to get
at the various files.
