The intention is to support the oldest compiler on any relevant supercomputer. The rule of thumb is that a compiler is supported for five years after it has been released. We may support a compiler for more are less than five years on a case-by-case basis, if it becomes clear that it is still needed or becomes too hard to support.
Supporting a compiler means that we will make resonably sure releases of Dune works with it, and that errors that occur with that compiler are considered “bugs”. Fixes for errors with unsupported compilers are still welcome, though they are considered “wishlist” or “feature request” and they should not be too intrusive.
Of course, Dune should work with any standard compliant compiler, but there are two important points about that statement:
- No compiler is complete standard-compliant, i.e. they do have bugs. Dune needs to work despite these bugs with the compilers we care about.
- Which standard are we actually talking about? The most recent standards are from 2011 and 2014. On the development branch we require C++11 and and some features of C++14.
Currently supported compilers
Below you can find the requirements for the development branch. For detailed information on the requirements of a release, have a look at the corresponding release notes.
Our main development compiler is g++ the Gnu Compiler Collection. On the development branch master we currently support g++-4.9 and newer. Here is the list of release dates.
Clang is a compiler build on top of the LLVM infrastructure and primarily sponsored by Apple. We currently support versions 3.8 and newer.
We try to stay compatible with icc 15.1. But this is currently not really tested.
C++ support in common compilers
Some useful links:
- C++11 Support in GCC
- C++14 Support in GCC
- C++11 Support in Clang
- C++14 Support in Clang
- C++0x CompilerSupport