disclaimer: I am working on Intel C++ Compiler support for Conan package manager. for us and our users, it's important to know when packages are fully ABI compatible, and when is it safe to mix objects/libraries produced by different versions of the compiler, in order to avoid run-time and compile-time compatibility issues.
the first question: did Intel C++ Compiler just change the versioning scheme? it seems like the new "major" release 2020 has version number 19.1, but not 20.0, which might be a bit confusing, as before we had major version number bump for each year (e.g. 2018 - 18.0, 2019 - 19.0, etc).
the second question: can we assume ABI compatibility between 19.0 (2019) and 19.1 (2020)? in other words, if we compile some C++ library by 19.1, can we safely link this library into application compiled by 19.0? (assuming the library may use C++ interfaces and C++ API, e.g. pass vectors, strings, etc. on library boundaries. also assuming compiler flags are the same - C++ standard, etc).
so far, I have found few things in the official release notes:
More algorithms support parallel and vector execution policies: find_first_of, is_heap, is_heap_until, replace, replace_if.
More algorithms support vector execution policies: remove, remove_if.
More algorithms support parallel execution policies: partial_sort.
The Intel® C++ Compiler 19.1 supports the following features under the /Qstd=c++20 (Windows*) or -std=c++20 (Linux*/OS X*) options:
std::is_constant_evaluated and __builtin_is_constant_evaluated
thus, I'd assume if library is using Parallel STL it might be unsafe to mix 19.0 and 19.1.
I've also have compared some Intel compiler libraries and found several differences in public symbols provided:
which also might cause some incompatibilities if the library is using such symbols.
We really like your findings with ICC 19.0 and 19.1 compiler. Here are the solutions to your questions.
The product with which you are working must be demanding for a stable program. So I will suggest you to first check the stability of your program with all the libraries and API you are using in your program because they might cause incompatibilities.
You can also use -fabi-version=<val> flag with ICC compiler which will help you to select specific ABI implementations.
I hope your problem gets resolved, and I appreciate your findings because it is very important in order to make a stable and robust program.
Stay Healthy Stay Safe!