Visual Studio
Visual C++ 2010 Beta 1
Visual Studio 2010 Beta 1 was released yesterday for MSDN subscribers. Probably the most anticipated release in a while for C++ developers, 2010 is Microsoft's attempt to give C++ first-class support, something which hasn't been seen since Visual Studio 6.0.
Update: downloads are now available for non-MSDN subscribers.
On the compiler side of things, we get partial C++0x support in the form of lambda expressions, rvalue references, auto, decltype, and static assert. The features are piled on with an improved TR1 library—finally including the much requested stdint.h and cstdint headers, but still lacking inttypes.h.
Also included is the Parallel Patterns Library, a new task-based concurrency library that makes heavy use of the C++0x features for a nice modern design. I mentioned before that on Windows 7 this will make use of a User-mode scheduled thread pool so it should be really efficient. Unfortunately given its proprietary nature I'm not sure how much use it will get.
The first thing you will notice on the IDE side is the inline error checking. Something we've enjoyed while editing C# for some time, we now get the red squiggly lines when an error is found. It works fairly well, but support for lambda expressions has not been written yet.
Intellisense has markedly improved since 2008. Using advanced C++ or a Boost library no longer guarantees it breaking. It has worked with nearly all the C++ I've thrown at it so far.
You can also see an External Dependencies virtual folder added to your project source, which is dynamically filled with all the files Intellisense will scan. I've found it is not terribly useful, though, because even with small projects the header count increases rapidly enough to make the virtual folder become an unintelligible mess.
The problem is only aggravated by libraries like Boost, which have hundreds of headers organized nicely in folders. Putting them into a single virtual folder just doesn't work.
This release also marks the move to the extensible MSBuild system for C++ projects, which aims to provide functionality similar to GNU make in an XML format.
Perhaps the most obvious change for the overall IDE is that the main UI is now done entirely in WPF. It sounded like a decent plan at first but I'm not too happy with it now. Minor differences from the way native controls behave can be pretty annoying, and the five to twenty second load time makes it less useful for opening random .cpp files when 2008 would load them in one or two seconds.
Visual Studio 2010 Beta 1 in four days
Visual Studio 2010 Beta 1 is being launched for MSDN subscribers in four days on the 18th, and for the general public on the 20th!
Visual Studio 2010 CTP now available
Coinciding with the 2008 PDC, the first Visual Studio 2010 CTP is now available for download. At first glance, it includes a few interesting things for C++:
- Partial C++0x support: lambda expressions, rvalue references, static assertions, and “auto” are now supported.
- Revamped IntelliSense: now faster and more accurate.
- Parallel Pattern Library: a modern C++ library that allows easier and safer use of today’s multi-threaded computing.
I’ll be posting more as I take a closer look at these and other features.
Visual Studio incompatibilities
Hopefully someone reading this won’t have to waste a few days trying to figure this stuff out:
If you install Visual Studio 2008 Team Explorer, you’ll want to install it before VS2008 SP1 or stuff will break.
Internet Explorer 8 Beta 2 breaks the Windows Mobile 6 SDK Refresh—try to click on Platforms in the project creation wizard, and it’ll cancel the dialog. Uninstalling IE8 (Control Panel->Programs->View installed updates->Windows Internet Explorer) fixes the issue.
RTM hits for SQL Server 2008, Visual Studio 2008 SP1, .NET 3.5 SP1
SQL Server 2008, Visual Studio 2008 SP1, and .NET 3.5 SP1 have all been RTMed!
Visual C++ 2008 Feature Pack is now available
The Visual C++ 2008 Feature Pack I talked about before is finished and ready for download. This includes a bulk of the TR1 updates (sadly, still no cstdint) and some major MFC updates.
Visual C++ 2008 Feature Pack beta
It’s here! A beta of the promised TR1 library update has been put up for download.
Included in the pack is an update to MFC that adds a number of Office-style controls. Wish they’d put these out as plain Win32 controls, because I’ve got no intention of using MFC!
Visual Studio 2008 released, TR1 support coming
Anyone following Visual Studio 2008 will know that although it offers a plethora of new features for the managed world, there was little focus on the unmanaged side of things. Now that it is finally out the door, I guess it’s a good time to look at what few new features are there for us unmanaged C++ coders.
- Improved standards conformance with support for friend templates, an uncommon but powerful C++ feature.
- Intrinsic support for SSSE3, SSE4.x, and SSE4a. These are modern vector instructions (SSE4a literally just came out with AMD’s Phenom processors!) that anyone interested in writing high‐performance code will want to be familiar with.
- Intrinsic support for the CMPXCHG16B instruction. This instruction is essential when writing many lock-free algorithms for the x64 platform. I’ve been lobbying to have it added for a long time, so I’m especially happy to finally see it. Unfortunately, the generated code in Beta 2 was very sub‐optimal (considering the instruction is typically used in very tight loops) so I may end up using assembly anyway! I’m anxious to see if it is improved in RTM.
- Improved optimizer, with support for inlining transcendental functions and scheduling for the latest CPUs.
- Linker options updated for Vista – ability to specify UAC and address space randomization properties. For some reason, still no support for DPI independence so we’ll end up writing manifests anyway.
- We can finally use those quad‐core CPUs that are coming out to reduce our compile times with Multi‐threaded compiling.
Not much, huh? That’s because Microsoft was running under the assumption that people would flock to C# and only use unmanaged C++ to maintain "legacy" code. Perhaps the best news so far, they’ve finally realized their mistake. Although they didn’t have time to put things into VC++ 2008, they have re‐committed to unmanaged code for the next version and in the meantime made a small separate announcement that they will be bringing VC++ 2008 users a mostly complete TR1 implementation update in early January.