Clang ( http://clang.llvm.org/ ) is a front end for a compiler of CeeLanguage, ObjectiveCee and CeePlusPlus. It is a part of the LLVM (LowLevelVirtualMachine) project. This WikiPedia article gives an introduction to the Clang and why it exists: http://en.wikipedia.org/wiki/Clang There is a searchable version of the development message list at http://news.gmane.org/gmane.comp.compilers.clang.devel ---- * Version 3.0 released 1st December 2011 * Version 3.1 released May 2012. * Version 3.2 released December 2012. * Version 3.3 released June 2013. * Version 3.4 released January 2014. * Version 3.5 released September 2014. There is also an implementation of the C++ standard library, called libc++, which now is released with Clang. Version 3.4 and later make significant progress to implementation of c++14 (formerly c++1y see CeePlusPlusOneWhy). For download details see the LowLevelVirtualMachine page. ---- As well as providing an alternative tool chain to the GnuCompilerCollection it also provides StaticCodeAnalysis tools. There is an experimental version of Clang called ConceptClang which is working on implementing CppAndConcepts replacing ConceptGcc. See TooFewTemplateParameterLists for an example of the improved error messages compared to GnuCpp. The error messages have really helped me on several occasions. I have been able to sort out a couple of bugs which had been in some code for a long time. -- JohnFletcher ---- I have just found a really useful article on UndefinedBehavior in CeeCeePlusPlus and how Clang deals with the issues. See WhatEveryCeeProgrammerShouldKnow -- JohnFletcher ---- The underlying activity in Clang is to turn the input source code into an AbstractSyntaxTree (AST) representation. There is a tutorial on this at http://amnoid.de/tmp/clangtut/tut.html (somewhat dated and referring to an earlier stage of the Clang work). -- JohnFletcher ---- I thought that having a good compiler such as Clang was going to be a great benefit. So it is most of the time. I have been using it on some old code and found some old errors which is very good. Now as I am working through some more of the errors I have found something which had been below my radar and is a consequence of the new standard for CeePlusPlus (see CeePlusPlusEleven) and it breaks some of my code in a way I cannot see an easy way to fix. I suppose I should be grateful to Clang and the authors. My code is broken. See ImplicitlyDeletedCopyConstructor. The above was how it felt to me a couple of days ago. What I have found out since is very interesting and worthwhile to put here to guide others. * The main reason I had a problem was because my version of the library (libstdc++) which comes with gcc (4.4) was out of date. I am stuck with this unless I upgrade my whole version of Linux (Ubuntu 10.4) or install an extra compiler. * The alternative is to install the Clang version of the standard library (libc++). This is not straightforward as the instructions given are for the Mac and not for Linux, although they can be found on the message list. I managed to make this work. * Installing the library libc++ got rid of the original error messages but gave me some different ones. * The new error messages turn out to be an interaction with something in the BoostLibraries, but updating to the latest version of those (1.49.0) has made those disappear too. One lesson seems to be that it is important to keep everything uptodate, including myself. I have decided to learn more about the features in CeePlusPlusEleven. Another lesson is only to report bugs when I am sure what they are and where they are. ''The eventual solution to these problems has been to update my UbuntuLinux from 10.04 to 12.04, another long term support version. This gives me gcc 4.6 which has libraries which will also work with Clang 3.2 even with C++11. This is helpful as I have a number of libraries which I have never managed to get working with Clang.'' -- JohnFletcher ---- CategoryCpp CategoryCee CategoryLint CeePlusPlusRoadMap