LLVM's Clang Compiler Is Now C++11 Feature Complete
The Clang C/C++ compiler front-end to LLVM is now declared "feature complete" against the C++11 ISO standard.
With a SVN/Git commit made today, the C++11 support within the LLVM/Clang compiler is now deemed "feature complete" with all of the new features to the ISO-approved C++ language update having been implemented.
The last of the C++11 features to be implemented were support for inheriting constructors, and C11/C++11 thread_local. C++11 support has been a very active work-in-progress item for the past several Clang releases. It's been nearly complete for several months but only with the latest LLVM/Clang 3.3 SVN code are all of the features officially implemented.
By Intel developers there has also been a project forming that supports automatically converting C++ code into C++11 to take advantage of new features.
Finishing off this support comes at a time when many open-source projects are beginning to use C++11. LLVM developers have also looked at using some C++11 features within the compiler itself.
For those unfamiliar with the C++11 language features, there is a Wikipedia article and the ISO.org specification.
Meanwhile, in terms of support for GCC (the GNU Compiler Collection) supporting C++11, it's nearly complete. The GCC C++11 state is reflected on this web-page. Most functionality of C++11 is implemented within the recent release of GCC 4.8, but still to be complete is minimal support for garbage collection and reachability-based leak detection, some data-dependency ordering, and a few other small items.
LLVM/Clang 3.3 will be the first compiler release with full C++11 support and its release is expected in June. Besides finishing up the C++11 support, LLVM 3.3 and Clang 3.3 also provides dramatic performance improvements, better Intel AVX2 support, the AMD R600 GPU LLVM back-end, enhancements to its loop vectorizer (and enabled by default for -O3), and numerous other new features and optimizations.
With a SVN/Git commit made today, the C++11 support within the LLVM/Clang compiler is now deemed "feature complete" with all of the new features to the ISO-approved C++ language update having been implemented.
The last of the C++11 features to be implemented were support for inheriting constructors, and C11/C++11 thread_local. C++11 support has been a very active work-in-progress item for the past several Clang releases. It's been nearly complete for several months but only with the latest LLVM/Clang 3.3 SVN code are all of the features officially implemented.
By Intel developers there has also been a project forming that supports automatically converting C++ code into C++11 to take advantage of new features.
Finishing off this support comes at a time when many open-source projects are beginning to use C++11. LLVM developers have also looked at using some C++11 features within the compiler itself.
For those unfamiliar with the C++11 language features, there is a Wikipedia article and the ISO.org specification.
Meanwhile, in terms of support for GCC (the GNU Compiler Collection) supporting C++11, it's nearly complete. The GCC C++11 state is reflected on this web-page. Most functionality of C++11 is implemented within the recent release of GCC 4.8, but still to be complete is minimal support for garbage collection and reachability-based leak detection, some data-dependency ordering, and a few other small items.
LLVM/Clang 3.3 will be the first compiler release with full C++11 support and its release is expected in June. Besides finishing up the C++11 support, LLVM 3.3 and Clang 3.3 also provides dramatic performance improvements, better Intel AVX2 support, the AMD R600 GPU LLVM back-end, enhancements to its loop vectorizer (and enabled by default for -O3), and numerous other new features and optimizations.
71 Comments