Now I'm really curious. Apart from the compiler shipping with the OS (RHEL or similar), most HPC systems do have newer compiler versions installed. From a recent version of the Intel compiler to gcc and nowerdays even clang. Which requirements do we talk about here?
Compilers and libraries used. Point is as you wrote: "most HPC systems". Example I'm talking about: An application is compiled and then shipped to an HPC system. The compilation may be done externally and/or in a VM and sometimes it needs additional stuff on the HPC system compiled with the same compiler and libraries (often bundled with the app). There people try to make as few assumptions on the System as possible. So system-libraries are used, and others compiled with the "system compiler". And especially on that the assumption is e.g. "All HPC systems have GCC 4.6" (or whatever minimum), so they compile the app with exactly this compiler. Some systems might have newer compilers, but that would mean to setup a tests for every compiler version which is avoided. This results in very narrow requirements like: GCC 4.6 or Clang 5.0, libFoo 3.1 or 4.5, libBar 1.42, ... and the code is only tested with those few things and might (and will...) break with newer or older ones. As mentioned: No point in arguing, this is what it is. Supporting more versions == more costs -> Not done.