Archive: Microsoft releases free OPTIMIZING VC7


Microsoft releases free OPTIMIZING VC7
Well, the *command-line* version anyway. :)

Microsoft calls this package "Visual C++ Toolkit 2003" - it is available at

http://msdn.microsoft.com/visualc/vctoolkit2003/

But seriously, this is the real thing - not the free "Standard Edition" version included with the .NET SDK!

For VS6/VC6 people, there is also the fairly new (end of March) Service Pack 6... all of which raises some questions (at least for me):

1) Can I use this with the VS6 IDE? Probably, but there will be issues with new and changed compiler switches. Note that MS says that this "toolkit" will coexist with other VC/VS installations, so there are some obvious approaches - until the free IDE packages catch up with this. :)

2) What about the "Processor Pack" add-on for VC6? Is that functionality contained in this version of VC7?

3) What about SP6? If you are not using the Processor Pack, then installing this seems like the thing to do in any case. But if you *are* using the Processor Pack, recall that it is very specific to which VC6 you are running, having different packages for SP4 vs SP5... so if VC7 includes the Processor Pack stuff, then this is a non-issue - otherwise, one might want to hold off on SP6.

Final comments (for now):

1) As has been discussed here before, it is a good idea to keep up with the [free] "Platform SDK" releases from Microsoft, and that hasn't changed with the release of the "Toolkit".

2) For MFC/ATL users, I don't *think* that the "Toolkit" release includes the newer versions of this stuff that you would get in the full VS.NET.

3) Regarding the specific contents of SP6, note that the size for the "Full" download is down from 130MB to 60MB - because they are only including new stuff for VC6, VB6, and VSS6 now.

4) Speaking of download sizes, the "Visual C++ Toolkit 2003" comes in at a trim 31MB. :)

Happy updating - or not! :D


1) It will probably work if you replace the binaries, it will however be a little less easy to configure from the IDE.

2) The processor pack is not available for VC7, most of it is probably integrated.

3) The processor pack is not available anymore for SP6. Compiling with SP6 will result in a little bit larger NSIS binary, making your installers a bit larger.


Further Googling turns up the following:

1) The setup for SP6 lets you know that you are about to lose your Processor Pack support (if you had it installed).

2) The ReadMe for the VS6 SP6 Beta says

"***12539;VC++ 6.0 Processor Pack: This technology has been deprecated and
***12288;can no longer be serviced. If you are using the 6.0 Processor Pack
***12288;you need to upgrade to Visual Studio 2002 or 2003, where the
***12288;Processor Pack technology comes with the more current products out
***12288;of the box. Installing SP6 on top of SP5 will result in the removal
***12288;of the older Processor Pack technology. If you must keep this around,
***12288;then do not install SP6."

3) Carl Daniel [VC++ MVP] says

"There is no processor pack for SP6 nor will there be. If you need the processor pack features you need to continue using SP5, or upgrade to VC7/7.1 which integrates the processor pack features directly."

So, that about wraps up most of the SP6/Processor Pack/VC7 questions... as for using the new VC7 binaries with the VC6 IDE, I notice that you *can* manually edit the compiler switch settings for your project - but as Joost said, that makes it "a little less easy". :)


Post-install and experimentation followup... :)

1) Generated code quality of the "Toolkit" VC++ compiler vs the "Processor Pack" compiler - is the same for the code I looked at in detail (my MD5 generation) - some of the comments are different, and entire blocks of code may be emitted in a different ordering, but the output is otherwise identical.

Note that the sample I examined did not do any floating point, if such things are of interest to you.

2) Since the "Toolkit" release includes the optimizing compiler, but is otherwise a "bare bones" package, there are no updated MFC/ATL libraries or *source*. The latter matters since some MFC source files are part of your [MFC] project - a case in point is "AFXTEMPL.H": this will not compile any longer, since the compiler now tracks and enforces a later version of the language standard than when this code was written. The required edits are simple, however, and I will post them if anyone asks. :)

3) Using the "Whole Program Optimization" feature gave me the same-sized executable to the byte for my app RFtp PRO... what is this feature? You are able to tell the compiler to output "intermediate language" instead of "real" object code, and then have the *linker* actually ask for code generation when all of your modules' intermediate forms are available. This in theory can enable some optimizations that are not available when the code generator only "sees" one module at a time.

4) Use with Visual Studio is simple - just modify the paths VS uses for executables, includes, and libs to see the "Toolkit" directories first - if you decide to use any options supported only in the newer compiler, just edit them in to your project settings.

5) As for the "Processor Pack" vs SP6 question, you can go ahead and and install it if you feel like it. Since the "Toolkit" code generation is equivalent, you are not losing anything there... and while neither SP6 nor the "Toolkit" includes MASM, it is not deleted by the SP6 install, and so presumably still works - but I haven't tried assembling anything, either.

OK, it still works - I just compiled an Objective Caml (which needs MASM) file and got a real .obj. :)


POST Post-install and experimentation followup... :(

Sigh. The whole thing of being excited about checking out "cool" new technology can just end up sucking chunks of your time... and turn out to be a waste in the end.

I am going to have to give up on this "Visual C++ Toolkit 2003" project for the time being. Why, when things looked so promising you ask?

Reality. I am not sure why Microsoft released this package, but it isn't *in general* a useful upgrade to a functioning VC6 development environment... after you get past the code generation coolness, you notice the little details:

1) no libcmtd.lib

2) no msvc*.lib files

So, debugging becomes [potentially] impossible, and you can't link with the DLL versions of the C runtime. And there are other debugging incompatibilites. :(

Fortunately, I kept snapshots of my VS tree at various points... :)

Back to [real] work.