A Multitude of Updates in Visual Studio 2019 version 16.8 Preview 3

Sy Brand

Visual Studio 2019 version 16.8 Preview 3 comes with a huge collection of updates for C++ programmers. Download today to try out new additions in conformance, performance, and productivity.


We’ve improved support for major C++20 features across our compiler, standard library, and IDE. You can now use Modules, Concepts, Coroutines, and (some of) Ranges all in the same project!

C++20 Coroutines are now feature-complete and available under /std:c++latest. When using C++20 Coroutines you should include the <coroutine> header. Support for our legacy behaviour is available under <experimental/coroutine> and the /await switch. Read more details in our C++20 Coroutines blogpost.

C++20 Modules are also feature-complete and available under /std:c++latest. This includes header units and experimental MSBuild support which will work out your module dependencies automatically and ensure they are built in the right order. Learn more in our C++20 Modules blogpost.

We now support the majority of C++20 Ranges and are working hard to complete all features. This release includes support for most of the range-based algorithms. You can track progress on this GitHub issue.

Outside of Ranges, this release brings several new STL features and optimizations. Some examples:

You can find all the STL updates in our Changelog.

IntelliSense now provides support for C++20 <concepts> and <ranges> headers, and rename and browsing for concept definitions. There is a known issue that we expect to address in Preview 4.

Conditionally trivial special member functions are now supported in MSVC.


All required features of C11 and C17 are now supported using the /std:c11 and /std:c17 switches. This includes:

  • _Pragma
  • restrict
  • _Noreturn and <stdnoreturn.h>
  • _Alignas, _Alignof and <stdalign.h>
  • _Generic and <tgmath.h> support
  • _Static_assert

Note that the optional features are not supported, so we do not claim C99 compliance. Learn more in our C11/C17 blogpost.


vcpkg now supports binary caching and manifest files.

Manifests are files with the filename vcpkg.json that should be present in your project directory and can easily be checked into source control. They allow you to declare your library dependencies and configured so that vcpkg is automatically run as part of a pre-build step to install missing dependencies for your active build configuration.

Here is an example manifest file.

    "name": "supertux", 
    "version-string": "1.3.1", 
    "dependencies": [ 

Binary caching saves copies of your binaries when they are compiled for the first time by vcpkg. The cache location can be set anywhere from your local filesystem to a remote fileshare or artifact storage location. 

You can read more about the new features, including experimental features such as versioning and registries, in our vcpkg announcements blogpost.

CMake and Linux

We have upgraded the version of CMake shipped with Visual Studio to CMake 3.18. This will enable you to use their new CMake profiling feature, and more. Read more in their release notes.

You can now debug Linux core dumps on a remote Linux system or WSL directly from Visual Studio. This may be helpful if you run a “Windows shop” but deploy to Linux servers and want to diagnose crashes in a familiar environment.

We’ve improved our error reporting for missing build tools on Linux projects. Previously you would encounter a lot of errors when compiling, debugging, or using IntelliSense. Now you get a warning in the toolbar and a clear error telling you about the missing tools in the error view.


New warnings and quick-fixes based on an IntelliSense-driven code linter are now available in the editor. You can configure it in Tools->Options->Text Editor->C/C++->CodeStyle->Linter + Fixups. You’ll be able to get warnings and fixes for arithmetic overflow, uninitialized local variables, converting the result of an integer division to float, and more!

Code Analysis

Our code analysis tools now support the SARIF 2.1 standard: the industry standard static analysis log format. Behind the scenes, SARIF 2.1 powers the MSVC code analysis experience in Visual Studio, including error list population in both regular and background code analysis runs, green squiggles and fix-its. In the near future, we plan to improve the IDE experience further by color coding the squiggles according to severity level (Info/Warning/Error) of each defect based on information in the SARIF logs. You can read more about the format SARIF format in the official specification.

Download Visual Studio 2019 version 16.8 Preview 3 today and give it a try. We would love to hear from you to help us prioritize and build the right features for you. We can be reached via the comments below, Developer Community, and Twitter (@VisualC). The best way to file a bug or suggest a feature is via Developer Community.