The intention is to support the oldest compiler on any relevant supercomputer. We may support a compiler for shorter or longer 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 reasonably 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? On the development branch we require C++17.
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++-7 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 5 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: