EDG C/C++ Compiler Project
32 points by aw1621107
32 points by aw1621107
During the 2025 November C++ ISO meeting Edison Design Group announced that they would be winding down and that they will open-source their front end. This is the repo containing said front end along with some other components like C and C++ back ends. There is also a website with more info about the transition and a documentation website.
At least as far as my knowledge extends this is one of the four still extant C++ front ends (Clang, GCC, and MSVC being the others). It's most notably used as the front end for Visual Studio's Intellisense, and Intel's compiler used to use it before they switched to Clang.
Another interesting historical tidbit is that they were the only front end to implement C++98's export template feature, and their experience was used to argue for the removal of the feature in C++11, though according to this Stack Overflow comment that specific paper didn't pass voting. The feature was eventually removed in C++11, but I'm unable to find exactly when and/or which paper did so. There's a 2009 blog post by Herb Sutter indicating support for removal/deprecation with deprecation getting the most support, so I guess the paper/vote happened sometime after that.
This is really cool to see. Back when C++ compatibility in compilers was generally terrible in the late 1990s and early 2000s, you'd always hear stories about the compatibility level of EDG's frontend. I didn't get to use an EDG-based compiler until working with the Green Hills toolchains for some of Nintendo's consoles.
At least as far as my knowledge extends this is one of the four still extant C++ front ends (Clang, GCC, and MSVC being the others).
One thing that surprised me when I asked him about it years ago is that Sean Baxter's Circle is an independent C++ front-end implementation, in addition to the Circle-specific features. I'd previously assumed that he'd started with the Clang front-end.
Ah, Circle had completely slipped my mind. It's quite an impressive achievement IMO. Shame Sean didn't seem to have found sufficient interest to continue work on it.
hopefully Sean can open source Circle, it is quite neat.
There's also https://serjective.org/aburi/ but it seems to be in pre-alpha development.
Looking at the source code just now in github, this appears to be one of the only remaining "modern" C++ compilers written in C. Clang, GCC, are now written in C++. No idea about MSVC.
I think there's a mix of C++ and either C or C-style C++? There's definitely C++-only features used in places (e.g., a reference in a function signature here, a template here), but those seem to be relatively rare in the brief search I did.
I'd guess the mix of styles is in no small part due to the age of the codebase. The first commit is from 1990!
Yeah, you are right. I guess the .c file extension threw me off.
You might be interested in this comment from a former EDG dev:
For the first 30 years or so, it was C89 code. Then we switched to C++11, but to minimize disruption to customers, we kept the file extensions unchanged. C++ was only introduced in new code, and even for new code we often stuck to existing C-based idioms. The modules code started after the switch to C++, and so has more of a C++ flavor.
I think your first impression is very understandable, to be fair. It looks like the use of C++ features is relatively sparse so it'd be easy to miss.
I've been excited for this for a while. Mostly because the current live-bootstrap project uses an older version of GCC from back when it was written in C to go from C to C++. This adds an actual option for going from C to C++ that doesn't rely on very old compilers that only really support x86.
I'm looking forwards to seeing new compilers based on this.
I don't think this would work as-is for bootstrapping C++ from C? It uses C++ in places, though to be fair I have no idea how easy/hard it would be to replace those with C.
The Orange C++ compiler for Windows is still actively maintained to this day https://github.com/LADSoft/OrangeC
For years they claimed C++14 but recently started supporting C++17