Review: Visual Studio 2012 shines on Windows 8
Microsoft's everything-and-the-kitchen-sink IDE fuels Windows 8 and Windows RT development with smoothly integrated tools and an abundance of resources
Turning C++ to 11
Visual Studio 2012 also supports new syntactic features for the C++11 standard. These include range-based iteration for loops, which lets you define an iterable -- say, an integer array -- and compose a for statement whose index is drawn from successive members of that iterable. Among other new features, C++11 also implements a standard thread class and supports atomic operations, which provide classes and template classes that give more expressive control over multithreaded access to objects.
In addition, Visual Studio 2012 supports C++ Accelerated Massive Parallelism (AMP), announced last year by Microsoft. C++ AMP is a programming model that exploits the data parallelism present in graphics processing units (GPUs) and provides data handling constructs, as well as math function libraries. Visual Studio 2012 not only recognizes the new constructs, but also includes a GPU debugger for working with C++ AMP applications.
Debugging C++ AMP applications is not the only graphics debugging feature in Visual Studio 2012. Perhaps one of the IDE's most interesting new capabilities is Pixel History. Used in debugging Direct3D applications, Pixel History lets you identify which piece of code is responsible for a specific pixel in your application's display and examine the events that affected the pixel over the application's lifetime. This is important if the rendered pixel is the result of a blending of two or more events that have modified it at different points in the past. You can step through the events and find the graphical primitive responsible for altering the pixel.
Visual Studio 2012 adds optimization features for ASP.Net development as well. This includes "minification," which reduces the footprint of an application's JavaScript libraries for deployment. During development and debugging, you want JavaScript code to be in its full-text, human-readable form. But when deployed, you want the JavaScript compressed (and possibly obfuscated) for performance and security. The minification process optimizes the JavaScript files for deployment.
While Visual Studio 2012 looks forward to Windows 8, it doesn't shrug off its ancestry. The IDE is particularly tolerant of projects built by its predecessors. Provided that a project doesn't explicitly employ a feature available only in Visual Studio 2012, that project file can be opened either in Visual Studio 2010 or Visual Studio 2012. The notable exceptions to this are F# and LightSwitch projects. Once you allow Visual Studio 2012 to upgrade such projects, they can no longer be opened in Visual Studio 2010. The reason given for these exceptions is the relative novelty of F# and LightSwitch. Microsoft deemed it unlikely that a large legacy codebase existed for either, so focused less effort on preserving backward compatibility with such projects.
In addition to all the new capabilities, some welcome features in the IDE have been updated. Code snippets have been improved with the inclusion of "surround with" snippets. Whereas ordinary code snippets are pieces of skeletal code for common constructs that you simply "pour" into a single location (like a glorified paste operation), "surround with" snippets let you define an enclosing construct -- such as an if statement and its accompanying body -- that surrounds a section of selected code.