|
| 1 | +--- |
| 2 | +title: "What's New for Visual C++ in Visual Studio 2017 RC" |
| 3 | +ms.custom: "" |
| 4 | +ms.date: "11/16/2016" |
| 5 | +ms.prod: "visual-studio-dev15" |
| 6 | +ms.reviewer: "" |
| 7 | +ms.suite: "" |
| 8 | +ms.technology: |
| 9 | + - "vs-ide-general" |
| 10 | +ms.tgt_pltfrm: "" |
| 11 | +ms.topic: "article" |
| 12 | +ms.assetid: 8801dbdb-ca0b-491f-9e33-01618bff5ae9 |
| 13 | +author: "BrianPeek" |
| 14 | +ms.author: "brpeek" |
| 15 | +manager: "ghogen" |
| 16 | +translation.priority.ht: |
| 17 | + - "cs-cz" |
| 18 | + - "de-de" |
| 19 | + - "es-es" |
| 20 | + - "fr-fr" |
| 21 | + - "it-it" |
| 22 | + - "ja-jp" |
| 23 | + - "ko-kr" |
| 24 | + - "pl-pl" |
| 25 | + - "pt-br" |
| 26 | + - "ru-ru" |
| 27 | + - "tr-tr" |
| 28 | + - "zh-cn" |
| 29 | + - "zh-tw" |
| 30 | +--- |
| 31 | + |
| 32 | +# What's New for Visual C++ in Visual Studio 2017 RC |
| 33 | + |
| 34 | +Visual Studio 2017 RC brings many updates and fixes to the Visual C++ environment. We've fixed over 250 bugs and reported issues in the compiler and tools, many submitted by customers through [Microsoft Connect](https://connect.microsoft.com/VisualStudio "Microsoft Connect"). Thank you for reporting bugs! |
| 35 | + |
| 36 | +The compiler and tools version number in Visual Studio 2017 RC is 14.10.24629. |
| 37 | + |
| 38 | +## C++ Code Analysis |
| 39 | + |
| 40 | +The C++ Core Checkers for enforcing the [C++ Core Guidelines](https://github.com/isocpp/CppCoreGuidelines) are now distributed with Visual Studio. Simply enable the checkers in the Code Analysis Extensions dialog in the project's property pages and the extensions will be included when you run code analysis. |
| 41 | + |
| 42 | + |
| 43 | + |
| 44 | +## C++ Compiler |
| 45 | + |
| 46 | +In this release, we've updated the C++ compiler and standard library with enhanced support for C++11 and C++14 features, as well as preliminary support for certain features expected to be in the C++17 standard. With support for generalized constexpr and NSDMI for aggregates, the compiler is complete for features added in the C++14 Standard. Note that the compiler still lacks a few features from the C++11 and C++98 Standards. |
| 47 | +Visual Studio 2017 RC allows using /sdl with /await. We removed /rtc limitation with Coroutines. |
| 48 | +This release brings several improvements in optimization and code generation. Some notable improvements include: |
| 49 | + |
| 50 | +- Improved code generation of loops: Support for automatic vectorization of division of constant integers, better identification of memset patterns. |
| 51 | +- Improved code security: Improved emission of buffer overrun compiler diagnostics, and /guard:cf now guards switch statements that generate jump tables. |
| 52 | + |
| 53 | +The /debug:fastlink option has been improved to provide 30% faster link times on large components than in VS 2015. |
| 54 | + |
| 55 | +## C++ Libraries |
| 56 | + |
| 57 | +### Standard Template Library: |
| 58 | + |
| 59 | +* Minor basic_string _ITERATOR_DEBUG_LEVEL != 0 diagnostics improvements. Tripping an IDL check in string machinery will now report the specific behavior that caused the trip. For example, instead of "string iterator not dereferencable" you'll get "cannot dereference string iterator because it is out of range (e.g. an end iterator)". |
| 60 | +* Performance improvement: made basic_string::find(char) overloads only call traits::find once. Previously this was implemented as a general string search for a string of length 1. |
| 61 | +* Performance improvement: basic_string::operator== now checks the string's size before comparing the strings' contents. |
| 62 | +* Performance improvement: removed control coupling in basic_string which was difficult for the compiler optimizer to analyze. Resolves VSO# 262848 "<string>: reserve() does too much work". Note that for all short strings, calling reserve still has nonzero cost to do nothing. |
| 63 | +* We added \<any\>, \<string_view\>, apply(), make_from_tuple(). |
| 64 | +* std::vector has been overhauled for correctness and performance: aliasing during insertion/emplacement is now correctly handled as required by the Standard, the strong exception guarantee is now provided when required by the Standard via move_if_noexcept() and other logic, and insertion/emplacement perform fewer element operations. |
| 65 | +* The STL now avoids dereferencing null fancy pointers. |
| 66 | +* Added \<optional\>, \<variant\>, shared_ptr::weak_type, and \<cstdalign\>. |
| 67 | +* Enabled C++14 constexpr in min/max/minmax(initializer_list) and min_element/max_element/minmax_element(). |
| 68 | +* Improved weak_ptr::lock() performance. |
| 69 | +* Fixed std::promise's move assignment operator, which previously could cause code to block forever. |
| 70 | +* Fixed compiler errors with atomic\<T \*\>'s implicit conversion to T \*. |
| 71 | +* pointer_traits\<Ptr\> now correctly detects Ptr::rebind\<U\>. |
| 72 | +* Fixed a missing const qualifier in move_iterator's subtraction operator. |
| 73 | +* Fixed silent bad codegen for stateful user-defined allocators requesting propagate_on_container_copy_assignment and propagate_on_container_move_assignment. |
| 74 | +* atomic\<T\> now tolerates overloaded operator&(). |
| 75 | +* To increase compiler throughput, STL headers now avoid including declarations for unnecessary compiler intrinsics. |
| 76 | +* Slightly improved compiler diagnostics for incorrect bind() calls. |
| 77 | + |
| 78 | +## C++ IDE |
| 79 | + |
| 80 | +* The new SQLite-based database engine is now being used by default. This will speed up database operations like Go To Definition and Find All References, and will significantly improve initial solution parse time. The setting has been moved to Tools > Options > Text Editor > C/C++ > Advanced (it was formerly under ...C/C++ > Experimental). |
| 81 | + |
| 82 | +* We've improved IntelliSense performance on projects and files not using precompiled headers – an Automatic Precompiled Header will be created for headers in the current file. |
| 83 | + |
| 84 | +* We've added error filtering and help for IntelliSense errors in the error list. Clicking on the error column now allows for filtering. Also, clicking on the specific errors or pressing F1 will launch an online search for the error message. |
| 85 | + |
| 86 | +  |
| 87 | + |
| 88 | +  |
| 89 | + |
| 90 | +* Added the ability to filter Member List items by kind. |
| 91 | + |
| 92 | +  |
| 93 | + |
| 94 | +* Added a new experimental Predictive IntelliSense feature that provides contextually-aware filtering of what appears in the Member List. |
| 95 | + |
| 96 | +* The new Find All References UI includes information about whether we are reading from or writing to a variable in the results for C++ code. |
| 97 | + |
| 98 | +* _**New in RC**_ The Dot-to-Arrow IntelliSense feature has been moved from experimental to advanced, and is now enabled by default. The editor features Expand Scopes and Expand Precedence have also been moved from experimental to advanced. |
| 99 | + |
| 100 | +* _**New in RC**_ The experimental refactoring features Change Signature and Extract Function are now available by default. |
| 101 | + |
| 102 | +* _**New in RC**_ We've enabled the new experimental feature for C++ projects ‘Faster project load’. The next time you open a C++ project it will load faster, and the time after that it will load really fast! |
| 103 | + |
| 104 | +* _**New in RC**_ Improvements to the Open Folder experience. |
| 105 | +Edit, build and debug your non-MSBuild C++ project by loading your sources through “Open Folder”. |
| 106 | +Customize the experience through these json files: |
| 107 | + - CppProperties.json to customize the IntelliSense and browsing experience. |
| 108 | + - Tasks.json to customize the build steps. |
| 109 | + - Launch.json to customize the debugging experience. |
| 110 | + |
| 111 | +* _**New in RC**_ C++ IntelliSense will work without the need to create a CppProperties.json file in the root folder. Along with this, we've added a new dropdown to allow users to easily switch between configurations provided by CMake and CppProperties.json files. |
| 112 | +CMake support in Open Folder |
| 113 | +Opening CMake projects with “Open Folder” will automatically configure the environment for C++ editing, building and debugging. |
| 114 | + |
| 115 | +* _**New in RC**_ Further configuration is supported via a CMakeSettings.json file that sits in the same folder as the CMakeLists.txt file. |
| 116 | + |
| 117 | +  |
| 118 | + |
| 119 | +## C++ Installation Workloads |
| 120 | + |
| 121 | +### Windows Desktop Development with C++: |
| 122 | +We now provide a more granular installation experience for installing the original C++ workload. We have added selectable components that enable you to install just the tools that you need. Please note that the indicated installation sizes for the components listed in the installer UI are not accurate and underestimate the total size. |
| 123 | + |
| 124 | +### Linux Development with C++: |
| 125 | +The popular extension [Visual C++ for Linux Development](https://visualstudiogallery.msdn.microsoft.com/725025cf-7067-45c2-8d01-1e0fd359ae6e) is now part of Visual Studio. This installation provides everything you need to develop and debug C++ applications running on a Linux environment. |
| 126 | + |
| 127 | +### Game Development with C++: |
| 128 | +Use the full power of C++ to build professional games powered by DirectX or Cocos2d. |
| 129 | + |
| 130 | +### Mobile Development with C++ (Android and iOS): |
| 131 | +You can now create and debug mobile apps using Visual Studio that can target Android and iOS. |
| 132 | + |
| 133 | +### Universal Windows App: |
| 134 | +C++ comes as an optional component for the Universal Windows App workload. |
| 135 | + |
| 136 | +## Clang/C2 Platform Toolset |
| 137 | +The Clang/C2 toolset that ships with Visual Studio 2017 RC now supports the /bigobj switch, which is crucial for building large projects. It also includes several important bug fixes, both in the front-end and the back-end of the compiler. |
0 commit comments