_TL;DR: Remove VS 2013 support in ChakraCore so we can use the full C++11 feature set, following suit with the rest of the C++ community._
Drop support for ChakraCore build using VS 2013 tools.
Require VS 2015 toolset.
Remove VS2013 support as part of v2.0 release of ChakraCore.
Maintain VS2013 support in v1.x release branches.
No impact on JSRT consumers since JSRT is a C API.
No impact on Nuget consumers since prebuilt binaries provided.
Impact users that build ChakraCore 2.0+ from source. Require them to upgrade their MSVC build toolset to minimum VS 2015.
Node.js has dropped VS2013 support in favor of using C++11 features. Node.js v6.8 (Oct 12 2016) and v7.x (upcoming) do not support VS2013, only VS2015.
ICU v58 (released Oct 24 2016) does not support VS2013, requires VS2015 or cygwin for Windows builds.
BlueJeans are not dependent on VS2013, they are using VS2015.3
Users who wish to compile ChakraCore can easily do so with access to VS2015 MSVC toolset for free from the Microsoft Visual C++ Build Tools 2015
I definitely support this.
FWIW, very little work is required on our part to follow this proposal. We already mainly use VS 2015 (dev14). We simply drop the dev12 part of the legacy configuration and switch to dev14 on Windows 7 for Legacy build & test. AFAIK, dev14 is already configured on the Win 7 CI machines. @mmitche can confirm.
Other things this would enable, although none are necessary to go forward with this:
_u macro for all unicode strings and use unicode string literals as supported by the standard for char16_t, i.e. u"..." instead of _u("...").constexpr in places where it may be helpful.I'm sure there's more, but that's just off the top of my head.
Same, I definitely support this!
More features and less work. From what I understand, the reason we kept it was to support some customers that still supported VS 2013, which from what you mentioned is not needed anymore.
I opened a PR to master-ci to remove dev12 support from legacy (#2552) and a PR to update the Wiki (Microsoft/ChakraCore-wiki#25). We can wait to merge them until there's consensus on this issue.
I also support this but I would go for this after GCC support. Our Clang requirement (3.7+) is a pain on some of the distros and raising the compiler bar even more is something I would like to avoid.
Is the default GCC in most distros not C++11 compliant?
Is the default GCC in most distros not C++11 compliant?
It's not strictly about C++11 compliance (that is another issue though..)
It's more about introducing some new things and ending up with compiler bar is raised up even more.
So basically you're saying that for now the VS 2013 support keeps us from raising the feature bar higher. Your concern is if we drop the support requirement, we could potentially move to using features that are supported in VS 2015 and Clang but not default versions of other toolchains like GCC?
How far away is GCC support?
So basically you're saying that for now the VS 2013 support keeps us from raising the feature bar higher.
What I'm saying is, better don't change our codebase dramatically until ChakraCore compiles with GCC. I'm working on that update only on free time for now (around 30% is complete).. After 2.0 release period, I guess it will be a easier to estimate the process.
Not sure if we expect any tangible gain from dropping VS2013 sooner?
@obastemur I agree we should wait until we have a successful build in GCC and CI support for the same.
I will not hold this any longer. GCC latest support version has decent amount of C++11 features available. As long as we use stuff from C++11, it won't do any harm on any potential GCC work.
/cc @Penguinwizzard
I'm definitely in support of this move. The last thing that may be an issue is people who depend on building ChakraCore for Windows 7; I asked on the gitter to see if there's any (no response yet), and I'll leave the PR to make this change open for at least a week in the hopes that anyone who needs it will respond there.
@matthargett @rozele does React Native for Windows need ChakraCore to compile with VS 2013?
@curtisman Do you have any further concerns?
no, we only support VS2015.3 and 2017, and will be deprecating 2015 support soon. go for C++14 as far as I鈥檓 concerned! ;)
PR is open at #3855.
At this point, are we keeping this issue open to track additional work items?
Nope.
Most helpful comment
no, we only support VS2015.3 and 2017, and will be deprecating 2015 support soon. go for C++14 as far as I鈥檓 concerned! ;)