With the release of Microsoft Visual Studio 2010, several improvements have been made to make life easier for C++ developers. The three areas of focus for Visual C++ 2010 include a better programming model, overall performance and productivity, and support for Windows 7 applications with an updated MFC Library.
Microsoft Visual Studio 2010 has made great strides in performance and developer productivity. The new Windows Presentation Foundation (WPF)-based IDE is more extensible, has a new look and feel, and has been designed to improve readability. Document windows such as code editor and design view windows can now float outside the main IDE window and can be displayed on multiple monitors.
Microsoft Visual Studio 2010 gives developers powerful new core language features from the upcoming C++0x standard. The Visual C++ compiler in Microsoft Visual Studio 2010 has enabled six C++0x core language features: lambda expressions, auto keywords, rvalue references, static_assert, nullptr and decltype.
Lambdas are a core language feature that have lightweight natural syntax to define function objects where they're used, and these expressions have no performance overhead. Function objects are a very powerful way to customize the behavior of Standard Template Library (STL) algorithms and can encapsulate both code and data (unlike plain functions). In C++ development, lambda expressions implicitly define and construct unnamed function objects.
Substantial portions of the standard C++ library have been rewritten in Microsoft Visual Studio 2010 to take advantage of the new C++0x language features and increase performance. In particular, adoption of rvalue references has yielded many benefits. Types such as vector and list now have move constructors and move assignment operators of their own. For example, vector reallocations exploit move semantics by picking up move constructors
Microsoft Visual Studio 2010 introduces the Parallel Computing Platform, which helps you write high-performance parallel code quickly while avoiding subtle concurrency bugs. This lets you avoid some of the classic problems faced with concurrency. The Parallel Computing Platform has four major parts: the Concurrency Runtime (ConcRT), the Parallel Patterns Library (PPL), the Asynchronous Agents Library, and parallel debugging and profiling tools.
A brand new IntelliSense and browsing infrastructure is included in Visual Studio 2010. In addition to helping with scale and responsiveness on projects with large code bases, the infrastructure improvements have enabled building some fresh design-time productivity features.
IntelliSense features such as live error reporting and quick info tooltips are based upon a new compiler front-end. It parses the full translation unit to provide you with rich and accurate information about code semantics, even while the code files are being modified.
Visual Studio 2010 also offers substantial improvements in the build system and the project system for C++ projects.
The most important change is that MSBuild is now used to build C++ projects. MSBuild is an extensible, XML-based build orchestration engine that has been used for C# and Visual Basic projects in previous versions of Visual Studio. MSBuild is now the common Microsoft build system for all languages. It can be used both in the build lab as well as on individual developer machines.
In addition to the design-time experience improvements described so far, Visual Studio 2010 also improves the compilation speed, quality and performance for applications built with the Visual C++ compiler. The compiler back-end has added multiple code-generation enhancements to bring these improvements.
The performance of certain applications depends on the working set. The code size for the x64 architecture has been reduced in the range of 3 percent to 10 percent by making multiple optimizations in this release, which has resulted in a performance improvement for such applications.
Windows 7 has introduced a number of exciting technologies and features. You can take advantage of innovations like Direct3D 11, DirectWrite, Direct2D and Windows Web Service APIs by using the SDK headers and libraries available in Visual Studio 2010.