Did you know that with the Visual Studio 2005 release there will actually be six different versions of the Visual C++ compiler?  Did you also know that when you pick up the PSDK, Framework SDK, Longhorn SDK, or even join the XBOX developer program, you will also get a different version of the compiler?  If you read my early posts (February), you got a taste of this, but today I'm here to help you understand what the deal is with all of these compilers.

Released Compilers

Every time the C, C/C++, Visual C++/Visual Studio product has shipped, you have a released version of the compiler.  These are the "real-deal" compilers - shipped out in boxes or MSDN subscriptions and serviced as needed (one off fixes/QFEs or in service packs).  Up until Whidbey/8.0/VS 2005, we also had two versions of the released x86 compiler: optimizing and non-optimizing.  Now, oftentimes people mistakenly call the optimizing compiler the optimized compiler, but that isn't right since both of the compilers are optimized - follow? <g>  In other words, one compiler offered optimization options, and one didn't, but both were built with optimization tools thereby making them both optimized compilers.

There are also the release versions of the C++ compiler for smart devices.  "They" have recently made a big update and will be showing up in the VS 2005 box - very cool!

The .NET Framework SDK in its current incarnation (v1.0, v1.1 and v2.0) include only released versions of the Visual C++ compiler toolset.

Non-Released Compilers

Microsoft operating systems are built with the C++ compiler and tools.  Whenever you install the PSDK you get a C++ compiler toolset that was used to build the version of Windows that the PSDK is matched up to (say, for instance, Windows 2003 Server Service Pack 1).  Why is it not built with a released compiler?  Because we choose to support inovation in the platform and use Windows as one of our Real World Code test cases for compiler changes for the C++ product under development. The intent in shipping a compiler with these SDKS is to aid you in development projects for the operating system that may only build with the latest compiler.  The compiler release under development is always aimed at supporting the lastest advancements in the operating systems and platforms.  The released compiler, however, always remains the recommended toolset for your production use as it has been tested and validated for broad usage.

To give an example, the PSDK has, until Whidbey, been the only place for people to pick up a compiler that builds for 64-bit, and the only place to get 64-bit ATL and MFC (unreleased versions).  Once Whidbey releases it will be your "real-deal" for 64-bit development!  The PSDK then will continue to ship, along with the Longhorn SDKs, the compiler that is used to build the x86 and 64-bit operating systems, but not the ATL and MFC libraries since there will be released versions available for use..

Because the XBOX is a special platform with special needs, the C++ compiler that developers use is even still different from any compiler above!

64-bit Compilers

In Whidbey, we went from shipping two x86 compilers (again, the optimizing and non-optimizing) to shipping one x86 compiler (always optimizing) and four 64-bit toolsets.  For each x64 and IA64 we have a cross-targeting-toolset, which means the tools run on an x86 box but generates 64-bit images.  We also ship native toolsets, which as the name implies means they run on the native 64-bit platform.  The x64 cross-tools will also run on under WOW.

So what do you get where?

The current thinking for the final Whidbey release is along the following -

VC++ Express - Only x86 compiler, for simplicity and size considerations

Visual Studio Standard - x86 and x64 compilers, for common usage consideration

Visual Studio Professional and Visual Studio Team products - still TBD (To Be Decided), but may include not only the x86 compiler but the x64 tools and IA64 tools, in one, the other or possibly none or both  :-), all for professional development consideration

.NET Framework SDK - the 64-bit versions will include the appropriate architecture native tools

Platform and Longhorn SDKs - these will continue to ship the native toolsets used to build the x86 and 64-bit versions of operating system releases, however they will not include 64-bit ATL and MFC once Whidbey releases (the x86 ATL and MFC have not been included in the PSDK for quite some time).

So what is the confusion?

So, great, this is all crystal clear to you (if not before then now?), so why take time to post this? Well, at least a few customers have taken pause at this guidance: http://msdn.microsoft.com/visualc/using/building/64bit/64bittoolsrecommend/default.aspx

While this guidance is absolutely correct, it does beg the question, "Will the PSDK continue to ship 64-bit compilers?" To that, the answers is yes, however I would reiterate that 1) we always recommend using a released compiler for production use, and 2) while the compilers will continue to ship with the PSDK, ATL and MFC libraries will not.

I hope this post has been of some help to you all, and has reduced confusion rather than creating more.  As usual, ask questions or give comments as early and often as you like!