Download presentation
Presentation is loading. Please wait.
Published byBrittany Lewis Modified over 8 years ago
1
Latest and greatest from the Visual Studio family for C++ developers Steve.Carroll & Daniel.Moth @microsoft.com https://blogs.msdn.microsoft.com/vcblog/
2
AGENDA Compiler and Libraries: Status and Roadmap Tools (Visual Studio, Visual Studio Code) Workloads (Windows, Windows Store, Android, iOS, Linux, IoT, Games)
3
Libraries Acquisition 80% of C++ projects use 2 or more 3rd party libs A majority of them use open source libraries Acquiring and rebuilding libs on Windows can be simple NuGet wasn’t designed for C++, e.g. no local rebuilding Open source tool based on a port tree approach (Vcpkg) Usage: vcpkg install boost Installs the.h,.lib and binaries in a “lib folder” ready to use https://github.com/Microsoft/vcpkg
4
Win an Xbox One S Take this survey: http://aka.ms/cppconhttp://aka.ms/cppcon
5
Other Talks Tuple: What's New, And How It Works C++ Modules: The State of The Union C++ Coroutines: Under the covers An Introduction to C++ Coroutines Putting Coroutines to Work with C++ for the Windows Runtime The Guideline Support Library: One Year Later Iterator Haiku (Range-v3) Latest and greatest from the Visual Studio family for C++ developers
6
AGENDA Compiler and Libraries: Status and Roadmap Tools (Visual Studio, Visual Studio Code) Workloads (Windows, Windows Store, Android, iOS, Linux, IoT, Games)
7
C++ Conformance C++11 C++14 C++17 Expression SFINAE (via more libraries) Two-phase Name Lookup* Extended Constexpr NSDMI for Aggregates Expression SFINAE (via Boost) Attribute [[fallthrough]]** Terse static_assert** Generalized range-based for-loops …
8
Compiler switches [easing your upgrade process] /permissive- Introducing the idea of a “less permissive mode" in the compiler Off by default now… on by default at some point in the future /std:c++14 On by default, for now The latest blessed C++ standard i.e. standards features up to C++14 /std:c++latest Off by default, for ever Every implemented feature that is not part of a finalized standard yet
9
Example libraries that we couldn’t compile previously Most Boost MSVC workarounds can be removed BOOST_MSVC_SFINAE_EXPR - now BOOST_NO_CXX14_AGGREGATE_NSDMI - VS15 Preview 4 BOOST_NO_CXX14_CONSTEXPR, BOOST_NO_CXX14_VARIABLE_TEMPLATES - VS15 RC Boost.Spirit X3 parser framework - VS15 RC Sprout constexpr containers/algorithms - VS15 RC Range-V3 (MSVC compatible version) Crow micro web framework GoogleTest (for C++11) JSON for Modern C++ (nlohmann github version)...
10
Compiler Diagnostics Improvements Column Information and Source Context : /diagnostics:caret Special Member Function errors
11
Generated Code Quality: Perf, Reliability, Security New SSA-based expression optimizer Eigen benchmarks: up to 7% speedups Spec2K6 benchmarks: up to 10% speedups Even more Real World Code Windows, Office, Bing, CoreCLR, Chakra Chrome, Boost, OpenSSL, OpenCV, Clang/LLVM, RxCpp, UnrealEngine CFG (/guard:cf) Improvements, e.g. guard long jumps void bar() { jmp_buf b; int res = _setjmp(b);... // hacker corrupts memory, making res //point to their own function and stack longjmp(b, 1); // CFG instrumentation will now // catch that longjmp is not // targeting a legal setjmp and fastfail } // Source code int test(int a) { return a % 2 != 0 ? 4 : 2; } // ASM without the new optimizer ?test@@YAHH@Z PROC and ecx, -2147483647 jge SHORT $LN3@test dec ecx or ecx, -2 inc ecx $LN3@test: test ecx, ecx mov eax, 2 mov edx, 4 cmovne eax, edx ret 0 // ASM with the new optimizer ?test@@YAHH@Z PROC and ecx, 1 lea eax, DWORD PTR [rcx*2+2] ret 0
12
Build Throughput Faster builds (with improved linking) VS2015 Update 3 When opting for /debug:fastlink, 2-4x faster, e.g. Fable, Forza, Chrome, Bing Maps Standalone tool (mspdbcmf.exe) to generate FULL PDB for binary VS “15” On by default, further improves link times by 30% (over VS2015 U3) mspdbcmf.exe integrated as part of the Visual Studio build experience IncrediBuild extension Generates an improved build plan which breaks down false dependencies Intelligent dynamic resource management (up to 8 cores with the FREE extension) e.g. Qt from 942 to 844 seconds e.g. ACE from 392 to 282 seconds Build visualization and diagnostic tools to find build bottlenecks
13
AGENDA Compiler and Libraries: Status and Roadmap Tools (Visual Studio, Visual Studio Code) Workloads (Windows, Windows Store, Android, iOS, Linux, IoT, Games)
14
The Visual Studio family https://www.visualstudio.com/
15
VS2015 RTM Recap IntelliSense Single file browsing/IntelliSense Simplified template deduction Refactoring Rename, Extract function, Move definition, Convert to raw-string literal Code generation Create definition/declaration Implement pure virtuals Other Error List, Window Layout Debugging PerfTips, Integrated Memory & CPU views EnC x64 support, Breakpoints config, Exceptions window, natvis improvements https://youtu.be/UuwBG9f4ZiQ Release Jul 2015 Update 1 Nov 2015 Update 2 Mar 2016 Update 3 Jun 2016
16
Visual Studio 2015 Update 3 (and Visual Studio “15”) IntelliSense New database format for scale Refactoring Change signature, Extract function Quick fixes Convert dot to arrow, Suggest missing #includes, Fully qualified name/use namespace Debugging More EnC, more Memory profiler, more natvis, Access Violations VS “15” only Run to Click Go-to (ctrl -, ) Exception helper and conditions when breaking on exception Improved Error List results Find All References and IntelliSense Memory and CPU profiler Extensions Bing developer assistant, Google Test Runner, Boost Test Runner
17
demo Visual Studio productivity
18
Visual Studio Code: C/C++ Extension Lightweight, keyboard focused Git integration Code Editing Go to definition, Peek definition, Switch header/source, Fuzzy auto-complete Code formatting (clang-format) Debugging Core-dump debugging, launch, attach, breakpoints (incl. conditional and function), stepping, threads, call stack, watch, GDB and MI commands Easily run, build, test, and run external tasks https://code.visualstudio.com/docs/languages/cpp
19
demo Visual Studio Code
20
Visual Studio “15” continued Performance Auto-precompiled headers for IntelliSense perf (when no PCH) Memory usage during debugging significantly decreased E.g. debugging a specific problematic project down to 1.9G from… crashing Solution load dramatic improvements Open Folder CMake … Acquisition / Installation
21
demo Visual Studio “15” Open Folder, CMake
22
New Acquisition / Installation With VS “15”
23
AGENDA Compiler and Libraries: Status and Roadmap Tools (Visual Studio, Visual Studio Code) Workloads (Windows, Windows Store, Android, iOS, Linux, IoT, Games)
24
Windows, Windows Store Universal Windows Platform (UWP) New way to target Win10 Desktop, Mobile, Xbox, and HoloLens from a single binary Accelerated OpenGLES 1, 2 and 3 support through Angle OSS library C++/WinRT - a language-extension-free WinRT projection for C++ (experimental) Large game deployments to Xbox Bridges to Windows Store Centennial (from desktop) - Packaging your desktop apps in the Store Islandwood (from iOS) Share source code across Desktop, UWP, Android and iOS (and soon Linux)
26
Android and iOS Improvements and bug fixes for the edit-build-debug cycle iOS Easily import (and roundtrip) your Xcode project into Visual Studio Android New releases New Android API levels (23, 25) Android NDK x64 Android NDK R11c support Java language service and debugging Support for Android Gradle build system CppCon: Mobile App Development for Multiple Platforms with Visual C++ https://visualstudio.com/vs/cplusplus-mdd/
28
Linux Use Visual Studio with any Linux distro or Windows Subsystem for Linux Ships as an extension for VS2015, is a workload in VS “15” Remote system needs SSH, GDB, and GCC for compile Project templates today enable remote compile/debug IntelliSense supports GCC with standard Linux libraries out of the box Connect using user/password or private key Cross compilation is planned Resources Documentation: http://aka.ms/vslinuxhttp://aka.ms/vslinux Issues, discussion: https://github.com/microsoft/vslinuxhttps://github.com/microsoft/vslinux
29
demo Targeting Linux from Visual Studio
30
IoT Visual C++ for Linux Development works with IoT devices running Linux E.g. Raspberry Pi, Beaglebone, Edison We are looking at extending it to enable GCC MCU devices The Azure IoT SDK supports Linux and MCU devices Portable to very small devices Provides message processing and device management capabilities Any device with network capability can get messages to/from Azure Devices without network capability can communicate through gateways https://azure.microsoft.com/develop/iot/
32
Games Use the cloud to build, launch, and scale out your games https://azure.microsoft.com/solutions/gaming/ Graphics debugger and profiler fully support DirectX12 with new features View resource history, View API and memory statistics, View a consolidated list of errors/warnings detected by the Direct3D debug layer, Frame Analysis for DirectX12, Improvements to GPU Usage Game engine partnerships Unity, Unreal, and Cocos https://www.visualstudio.com/features/game-development-vs
33
Games Use the cloud to build, launch, and scale out your games https://azure.microsoft.com/en-us/solutions/gaming/ Graphics debugger and profiler fully support DirectX12 with new features View resource history, View API and memory statistics, View a consolidated list of errors/warnings detected by the Direct3D debug layer, Frame Analysis for DirectX12, Improvements to GPU Usage Game engine partnerships Unity, Unreal, and Cocos https://www.visualstudio.com/features/game-development-vs
34
AGENDA Compiler and Libraries: Status and Roadmap Tools (Visual Studio, Visual Studio Code) Workloads (Windows, Windows Store, Android, iOS, Linux, IoT, Games)
35
Want our help upgrading to VS2015 or VS “15”? Since announcing the 2015 Migration DevLab at //build, we ran several DevLabs, and as a result updated the MSDN Documentation https://msdn.microsoft.com/library/dn986839.aspx We created a GitHub repo with a lot of resources to help you migrate Use this repo to explore solutions and submit error cases https://aka.ms/VCSamples If even with the above you are still having migration issues, please reach out to organize a DevLab for your code (very limited slots available) vcupgrade@microsoft.com
36
Summary Visual C++ toolset (compiler and libs) The obvious choice on Windows Visual Studio 2015 Update 3, Visual Studio “15” Most productive IDE for your editing, building, debugging Performance you can feel, Fast and easy workload installation, Open Folder Visual Studio Code Code editor redefined, optimized for editing and debugging your C/C++ code Any C++ developer, building any type of app No matter what platform you are targeting Microsoft We are listening and participating, tell us what you want to see next
Similar presentations
© 2025 SlidePlayer.com. Inc.
All rights reserved.