¶Visual Studio 2005 beta 1
Visual Studio 2005 beta 1 is out, and there are two new exciting features: you can get the beta for free or almost free (depending on whether you want Express or Enterprise), and you can submit bugs publicly! This is a wonderful step forward, as previously it was difficult or impossible to submit bugs to the Visual C++ team due to the email aliases being hidden and the web form being perpetually broken. My main concern is the quality of bugs that are being submitted; there are some really good bugs, like the Ctrl+Tab bug, and dumb bugs from people who want to make naming conventions needlessly verbose. That aside, the response time of the Visual C++ team has been really good, typically a few working days, and they're fixing bugs that I never expected them to fix. Very cool!
I've been experimenting a bit with the Visual Studio 2005 beta, and trying to submit bugs so that VS2005 doesn't ship as the disaster than Visual Studio .NET was. VS2005 so far looks pretty good -- the utterly slow dependency check bug that plagued VS2002/2003 has been fixed, the UI has more options to make it act like VC6, and aside from some dumb small bugs like key shortcuts only working every other time, it seems pretty good. The new compiler sadly does not fix the poorly performing MMX/SSE intrinsics bug, but it does support the "restrict" keyword along with a host of new intrinsics such as _BitScanForward(). Probably the most exciting feature, at least for me, is the ability to define new tool templates and plug them into the build process. A template for MASM is shipped with VS8 so that you can finally add .asm files to a project without having to set up the custom build rules. This is particularly important since the AMD64 compiler does not support inline assembly.
By the way, for anyone that has a significant amount of external assembly, VS2005 will be a pain because it fixes a bug in the macro assembler with implicit memory operand sizing. This primarily affects MOVD and MOVQ, and is a real pain because I and everyone I know was using the illegal syntax, and it all has to be fixed to assemble with MASM 8. It took me a while to fix all of the errant instructions in the 1.6.0 source. Remembering to explicitly specify dword ptr and qword ptr in new assembly will save you a lot of time.