Update: This chart has been updated and I’ve added charts for C++11 Concurrency, C++14, and C++17 here.
A few days ago, Christophe Riccio tweeted a link to a pdf that shows the level of support for “Modern C++” standards in four C++ compilers: Visual C++, GCC, Clang, and ICC.
One of the things I wanted to see was not just how support had advanced between versions of each compiler, but how compilers had changed relative to one another over time. I extracted the numbers for C++11 from Christophe’s document, found the release dates for each compiler, and created a chart that puts it all together.
It’s interesting to see how far behind Clang starts in comparison to the others, and that it ends up in a close dance with GCC on the way to full C++11 support. It also highlights how disappointing VC++ has been in terms of language feature advancement — particularly when VS2010 was ahead of Clang and ICC for C++11 features.
Creating the chart also served as an opportunity to play around with data visualization using Bokeh. As such, you can click on the chart above and you’ll see a version that you can zoom, pan, and resize (which is only a small part of what Bokeh offers). I intend to write about my experiences with Bokeh at a later date.
Release dates for each compiler were taken from the following pages:
- Visual Studio: http://en.wikipedia.org/wiki/Microsoft_Visual_Studio
- GCC: https://gcc.gnu.org/releases.html
- Clang: http://llvm.org/releases/
- ICC: http://en.wikipedia.org/wiki/Intel_C++_Compiler
The date used to mark the approval of the C++11 standard is taken from http://en.wikipedia.org/wiki/C++11
“It’s interesting to see how far behind Clang starts in comparison to the others, and that it ends up in a close dance with GCC on the way to full C++11 support.”
Yeah, but the little detail is that the first version of clang that you listed, 2.8, probably didn’t support C++ at all. Clang is such a young project after all. The first versions supported C and Objective-C (that were the main interests for Apple which at the time was the main and only real contributor). Then they started the development of C++ support and it took them less than two years to implement the full C++03 standard! This chart really doesn’t express how fast clang developers have worked to support this very complex language.
I’ve posted a reply to this comment here: http://brnz.org/hbr/?p=1417