by Mario Figueiredo on April 11, 2012 in Software
With the next version of Visual Studio soon to be upon us, we’re taking a look at what’s worth waiting for. While some animosity exists around certain decisions made by Microsoft, VS11 brings a lot to the table, most notably the addition of a robust environment for creating Metro-based apps.
It’s still early to know exactly which Visual Studio 11 editions will be launched. Currently, Microsoft only lists the product family for the beta version, which includes two express editions; Express for Windows 8, which only allows for Metro development, and Express for Web. Other than the Express editions, we have Visual Studio 11 Professional, Premium, Ultimate and Test Professional editions. It’s to be expected that there will be more Express editions on launch day, or soon after.
Some changes were made to the feature set of the Express editions, and that’s very good news for anyone using those. For one, unit testing is now a part of the feature set. Microsoft also includes support for 3rd-party UT frameworks in Visual Studio 11 but only makes it available on the Professional edition and onwards. Express editions will have to use the Microsoft Unit Testing Framework classes and members in the Microsoft.VisualStudio.TestTools.UnitTesting namespace, which isn’t really a bad thing. It’s just that any fan of xUnit or other frameworks will have to go with the Professional edition.
Version Control was also integrated into the Express Editions, as well as a subset of the Static Code Analysis platform (fxCop, which allows developers to pass Windows Store evaluation) and code profiling tools (CPU Sampling for VB, C# and C++ Metro apps and Instrumentation for HTML/J’S Metro Apps). It’s to be assumed similar feature sets will be included on Visual Basic, C# and C++ Visual Studio Express editions.
Microsoft Visual Studio is a large application and it’s hard to describe new features in detail, or even list every one of them with every new version. Not only does it incorporate programming language specific features, but it also changes or adds new development platforms or technologies. What I will be doing instead is list some of the most important ones in no particular order, and only for the programming languages I feel comfortable with.
With the introduction of C++ AMP last year and the promised inclusion on the next version of Visual Studio (that would be Visual Studio 11) fulfilled, developers are given a tool for the offloading of computing intensive code blocks to the GPU or other CPU accelerators (we recently discussed on Techgage one such type of accelerator) that doesn’t involve having to use other C++ compilers. C++ AMP stands for C++ Accelerated Massive Parallelism, and is composed of an extension to the C++ programming language and a minimal STL-like Library.
Other than full C++ compiler support for C++ AMP, Visual Studio 11 also includes two important windows for the debugging of C++ AMP-based applications. The Parallel Threads window displays all details of the individual threads running on the accelerator, and the Parallel Watch window acts as a normal Watch window, but with the ability to display values across all threads. Both windows include a feature-rich set of debugging tools, including the ability to freeze or thaw individual threads and the ability to flag threads across different processes.
Visual Studio has addressed some of the concerns on C++11 adoption. It includes now a number of new headers and language features that are expected on C++11 development. It also unexpectedly includes support for SCARY iterators, a rejected proposal for this new C++ standard. There’s still a long way to go and I’d personally prefer if Microsoft stuck to increase support for the new standard instead of providing new language extensions. Still missing are such language features as non-static data member initializers, variadic templates, initializer lists or delegating constructors.
Of note to C++ development also the fact the compiler can now automatically recognize loops that can be vectorized and will reorganized them as vector loops that allow modern CPUs to execute them several iterations at a time (in a similar, but not quite, fashion to parallelization). This can mean an increase of up to 8 times in the performance of many typical loops. Similarly, the compiler now includes Auto-Parallelization, which allows developers to flag certain loops to be run on more than one core through a simple pragma directive and without any need to write special code. Vector loops are good candidates.
For C# developers certainly the biggest news is the introduction of the async and await keywords. They provide developers the ability to write asynchronous code without having to write continuations and without having to split asynchronous code across multiple methods or lambda expressions. Showcased last year, it is now an official part of the .Net 4.5 specification.
One last note goes to data-based development. Visual Studio 11 for the first time breaks dependency of SQL Server Express for local database development. The new SQL Server Express LocalDB engine is now an integral part of Visual Studio and no longer requires it to use the SQL Server Express engine. This gives developers a zero-configuration database engine capable of opening .mdf database files.
Visual Studio will however require the use of SQL Server 2012 Release Candidate 0 .mdf files format. It can recognize previous versions and will do the upgrade if the user accepts it. This new .mdf format isn’t backwards compatible with previous versions of SQL Server or SQL Server Express. If the user chooses not to upgrade the .mdf file, Visual Studio will instead use the SQL Server Express engine.