[llvm-dev] Upgrading to MSVC 2015

Aaron Ballman via llvm-dev llvm-dev at lists.llvm.org
Tue Mar 29 10:42:55 PDT 2016


On Tue, Mar 29, 2016 at 1:29 PM, Zachary Turner via llvm-dev
<llvm-dev at lists.llvm.org> wrote:
> I think it's been a little over a year since we bumped the minimum VS
> version to 2013.  Are we planning to do the same for 2015?  Update 2 is
> releasing soon, which is stable enough at least to ship Chromium.

In the past, we've supported the latest two major versions of Visual
Studio unless there is a strong use case for dropping the oldest
version. I don't believe any such use case has been brought up yet, so
I would imagine we will continue to support MSVC 2013 until the next
major release.

> Language wise, 2015 comes with a lot of new C++ features.  The most
> interesting to people will probably be template aliases, C++11 constexpr,
> the thread_local keyword, and thread-safe function local statics (finally).
> A complete list of new C++ language support can be found here.
>
> As far as the different LLVM subprojects are concerned, LLDB was always
> going to be the hardest get working with MSVC 2015 due to the fact that it
> embeds python as an extension module, but as the LLDB maintainer for Windows
> I tackled this early and I can say that it's now done and we have completely
> transitioned to MSVC 2015 already in LLDB.
>
> Since we are only supporting 2015 in LLDB moving forward, I have a slight
> preference to bumping this in LLVM sooner rather than later, but I'd like to
> hear other peoples' thoughts on the matter as well.

Not everyone can upgrade to the latest version of the toolchain, even
if it has been released for a while. We did drop MSVC 2012 support
early, but MSVC 2015 was in RC or RTM stages by that point, and we had
some pretty big incentive to upgrade early (without function templates
supporting default arguments, the AST matcher DSL made for really slow
compiles of Clang itself, and resulted in a larger executable size
among other things, IIRC). I recall we had frequent build breaks from
MSVC 2012 not supporting basic C++11 language features or miscompiling
due to early support. I've not seen that be the case with MSVC 2013
except for the occasional issue with use of braced initializer lists.
Coupled with the fact that there's no future version of MSVC with an
imminent release, I would prefer to not bump unless it starts
significantly stifling our development efforts.

~Aaron


More information about the llvm-dev mailing list