[Bf-committers] Changes to Windows Compiler Support.

Ray Molenkamp ray at lazydodo.com
Fri Jan 26 18:51:22 CET 2018


With 2.8 coming up I'd like to make some changes to the supported
compilers for Blender. However since these are rather large changes
I'd like to give everyone an opportunity to express any concerns.


1) Currently we support msvc 2013(vc12)/2015(vc14)/2017(vc14)
for building, however we ship all our releases with msvc2013(vc12). This has
lead to some interesting issues with python, since any binary addons the user
might install with pip (or just manually copy in) will be using the vc14 crt.
It's rare to run into issues, but when it does it's an instant process termination
(the crt does not deal meeting it's future/past self very well)

Given python is our most important dependency I'd like to propose that any blender
version we ship in the future (2.8+, 2.79x can keep doing what it's doing) matches
the official python recommendation for that version [1] so we have maximum compatibility with any python addons

2) To support msvc 2017 we'll officially need a newer boost version, sadly support
for the latest is only available in 1.66 and i have not tested yet if all our
dependencies can actually build against it. However we have no failing tests when
building blender with boost 1.60+2017. it is just a bit (212 warns) chatty with
unknown compiler warnings, we could possibly repress these.

3) We recently added a switch in cmake to force the compiler to read all our code
as utf-8 (since there were some users on other codepages that got compiler errors
on some utf8 strings) this added 290 C4828 compiler warnings to a full blender build.
not great. None of these originate in our code, they are dragged in though 3rd party

10 in extern/bullet (we can probably fix these)
19 in lib/boost (this one is fixed in newer boost versions [2])
261 in lib/OpenCollada (we can easily send a pull upstream)

however all of these are in comments, completely repressing C4828 might not be the
worst thing here.

4) Libraries

There's a library upgrade [3] coming up for OSL/LLVM/OIIO that just doesn't build on

5) Cuda

Nvidia is notoriously slow with supporting newer msvc versions severely limiting the
compiler versions we can use (cuda9 only supports 2017 RTM, and we're on update 5
for msvc currently), to resolve this hostage situation I have created a small wrapper
around nvrtc that's able to compile cycles [4], however nvidia doesn't allow nvrtc
to create 32 bit cubins. which held me back from committing it.

6) 32 bit support

I spend a fair amount of time building the blender deps in various formats, x86
it starting to cost more and more time since a few of the projects just seem
to test on linux, sometimes on windows/x64 but rarely on x86 leading to all kinds
of obscure (usually sse) related build errors. This is starting to take up a
significant amount of my time for only a small percentage of end users (last
time I asked ~15% of the blender downloads were for 32 bit users) and by the
time we release 2.8 this number will probably have dropped even further. 


Officially drop msvc 2013 support for master/2.80 and make vs2017.5 the new standard.

1) Land D2913, I had been dragging my heels on this because of the breakage for x86
but given brecht recently put out an email [5] saying we were going to drop support
there's no reason not to apply this anymore.

2) Retire the 2013+2015 buildbots, and replace them with vs2017 based builds.

3) Block msvc2013 version in cmake

4) Remove the vc12 folders from svn

5) Silence the 'unknown compiler warning in our boost version'

6) Add C4828 to the ignored warning list.

7) Update the wiki build instructions.

I can do most of these my self, but will probably need sergey to do no 2.

Pushing my luck:

Is it too soon to drop x86 support?

Note that all of these changes are for master/2.80. any updates for 2.79 a/b/c/etc
will remain on msvc2013 with the current libraries.


[1] https://wiki.python.org/moin/WindowsCompilers
[2] https://github.com/boostorg/format/commit/045c6f15b9f6ef654642906f458d26b584b0b4c9
[3] https://developer.blender.org/D2915
[4] https://developer.blender.org/D2913
[5] https://lists.blender.org/pipermail/bf-committers/2018-January/049029.html

More information about the Bf-committers mailing list