In the upcoming release of Visual Studio, we are making some changes to the Visual C++ compiler switches. Two areas are impacted by these changes, 1) projects built with certain variations of /clr and 2) projects using 32-bit compiler to detect 64 bit portability issues.
These changes are the outcome of our investigation of the usage rate, customer value and maintenance cost of legacy compiler switches.
What did we remove?
The compiler switches listed below have been marked as deprecated in previous releases of Visual Studio and will be removed in VS “14”.
- /clr:oldSyntax: Tells the compiler to enable CLR functionality, using the old managed syntax, and to produce a mixed executable image. This has been deprecated since VS 2005.
- /wp64 (and _w64): Tells the compiler to detect 64-bit portability problems on types that are also marked with _w64 keyword. This has been deprecated since VS 2010.
What did we deprecate?
The compiler support of the following switches will be deprecated in VS”14” to be completely removed from the compiler in the next VS releases.
- /clr:pure: Tells the compiler to enable CLR functionality and to produce a pure executable image (one that contains only MSIL).
- /clr:safe: Tells the compiler to enable CLR functionality, to produce a pure executable image, and to only allow verifiable source code through the compiler.
- This also involves the deprecation of C++ Libraries support of /clr:pure and /clr:safe.
Note: No changes are made to /clr. You can still use /clr switch to build your code. If you use /clr:pure or /clr:safe, you need to reconfigure your projects to build with /clr to produce mixed assemblies. If it is necessary to have pure managed assemblies, you need to port your code to C#.
Based on our analysis, we have decided to make these changes in VS “14” CTP1. We will continue to focus on the highest value features in the compiler such as the language conformance features which we have provided in loads in this CTP. If you have feedback, send it my way “email@example.com”