[PSA] minimum toolchain update completed

Hello compiler fans!

As discussed in the RFC, LLVM’s cmake configuration now soft-errors if you use an older toolchain to build. The new minimums are:

  • Clang 3.5
  • Apple Clang 6.0
  • GCC 5.1
  • Visual Studio 2017

You can opt-out of the soft-error with LLVM_TEMPORARILY_ALLOW_OLD_TOOLCHAIN. You’ll still want to update your toolchain because that soft-error will become a hard-error once we move away from C++11, and we would truly miss you. I will send another RFC for this migration away from C++11 at the end of March 2019.

Happy compiling!

JF

Note that the minimum version of “Visual Studio 2017” is not “any old Visual Studio 2017” because I just tripped over that.

The cmake configuration wants version 19.1 or later, so 19.0 is not sufficient.

–paulr

At Microsoft, we believe that we gain a competitive advantage by making the Visual Studio versioning story as complicated as possible. To wit:

The compiler in the first VS 2015 release was version 19.00. For each update/hotfix release, we bumped that version by .01. When VS 2017 was released, we decided to keep the major compiler version the same to signify backwards-binary-compatibility with the VS 2015 series compilers, so the initial VS2017 compiler was version 19.10. We continued the practice of bumping the second decimal place for each toolset update, which is a less frequent occurrence than a VS update, so the VS 2017 15.9 compiler is version 19.16. VS2019 will similarly start at 19.20.

So yes, “19.1 or higher” is “any old VS2017 version.”

At Microsoft, we believe that we gain a competitive advantage by making the Visual Studio versioning story as complicated as possible.

Your plans have been foiled by Wikipedia!

So the answer really is… Blame Microsoft ?!

Well I got one thing right…. “19.0 is not sufficient.” Because that’s 2015.

Pilot error, turns out I had not updated all my helper .bat files, so even though I was running in a VS2017 shell I was still getting VS2015 in the build.

(slinks away hoping nobody will notice)

–paulr

The follow-on patch at https://reviews.llvm.org/D58682 may affect users who are on old versions of libstdc++ that slipped through the previous checks. In particular, if you use newer bugfix releases of old versions of libstdc++ with a new compiler, there is a chance that you did not encounter the soft error that was previously implemented. Nevertheless, support for your environment might be going away soon. The aforementioned patch will improve detection for such environments.

– HT