[llvm-dev] Upgrading to MSVC 2015

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


On Tue, Mar 29, 2016 at 1:48 PM, Zachary Turner <zturner at google.com> wrote:
> I can tell you that at least on the LLDB side, it was significantly stifling
> our development efforts.  The requirement that embedding Python means you
> have to compile Python with the same compiler that you compile the program
> you're embedding it in, and the fact that the only supported toolchain for
> Python 2.7 is VC 2008, and the fact that Python 2.7 doesn't even compile
> with VC 2015, we were in a bit of a bind.  The only practical solution for
> us was to support Python 3.5 (which is compiled with VC 2015 and solves the
> compiler / ABI compatibility problem through the UCRT).
>
> Granted this was a bit of a special circumstance, but as it stands I am
> already calling VC 2013 "unsupported" for LLDB.

That's an excellent example of a reason to bump the compiler version
early for LLDB, but it's also not one shared by LLVM or Clang as we
don't have those constraints. (FWIW, I don't have a problem with just
LLDB dropping support for MSVC 2013, especially given the above.)

~Aaron

>
> On Tue, Mar 29, 2016 at 10:42 AM Aaron Ballman <aaron at aaronballman.com>
> wrote:
>>
>> 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