daveedvdv
daveedvdv on Hacker News
Several of our customers instrument the AST to add security-probing and/or other dynamic-analysis features.
NVCC uses it to separate out "device" constructs.
That last bit is out of date (we didn't work much on keeping the web site up-to-date): The front end is mostly C++23-complete (modules notably lagging), and we have several C++26 feature in as well.
I estimate there were very roughly 50 customers in the end. (I was an EDG engineer and didn't work on admin stuff — so it might be off, but not much. I'm estimating based on support tickets origins.) That's down from maybe double that at our max (again, my estimate). I heard of fairly few customers switching to Clang or other projects (Intel being the most notable exception). Most of our customers we "lost" were due to mergers/acquisitions (i.e., two customers suddenly became just one).
Sorry, but that's nonsense. We've supported plenty of features. We've also occasionally been the first to implement them. In recent years, we spearheaded reflection, supported, first-implemented a bunch of constant-evaluation features (consteval etc.), and supported and first-shipped C++23 "explicit this".
It warms my heart to hear it!
EDG started with two people. When John Spicer joined in 1992, they grew to three. I joined when Mike Anderson retired from software development in 1999, so we were still just three. Mike Miller joined in 2004 to make it four. Mike Herrick in 2007 to make it five. We were briefly seven in the early 2020s, and then fell back to six when Ellen Herrick stepped down. The three youngest of us moved to NVIDIA about a year ago.
Steve Adamczyk, the founder, told me that he created the company to be able to enjoy his work rather than to grow it into something that would rob him of that joy (I hope I paraphrase it right): He is an awesome human!
No, MSVC is its own front end (the older continuously maintained C++ front end, in fact). However, Visual Studio's C++ IntelliSense uses the EDG front end.
It allowed you to put the _definitions_ of your function templates in your ".cpp" files instead of your header files.
No, we only parse the language, do full semantic analysis, and optionally lower the representation to something that roughly matches C-language semantics. (That lowering can do some minimal inlining if needed, but that's a historical thing.)
We have two "back ends": c_gen_be.c generates C code from the lower IL ("intermediate language"; EDG's term for the AST) and cp_gen_be.c generates C++ code from the unlowered IL.
I'm one of the former EDG engineers...
I'd say:
- A single executable can emulate pretty much all versions of MSVC, GCC, and Clang. (E.g., pass the option --gnu_version=80300 and it emulates GCC 8.3.0, including a large number of bugs/idiosynchrasies.)
- An optimized binary is pretty small.
- It builds quite quickly. (A complete "from scratch" build on a modern solid workstation will take just a few seconds.)
- It has some interesting source-to-source transformation capabilities (via cp_gen_be.c).
...
Oh, you had him as a teacher? That's awesome.
I met him and his family 25+ years ago while they were vacationing in California... and they were all great! He was also at the Morristown WG21 meeting, where C++98 was voted out (in November 1997).
(I co-moderated comp.lang.c++.moderated with John. For several years he was the person that kept it alive.)