Brandon Bray went about 18 months without blogging and I know I was just one of many people who begged him to start again. Well, he has and his first entry is a delightful laundry list of things he plans to cover. The second is about switch reduction in the 2005 compiler and linker, but it provides wonderful insight into the hassles of writing, testing and maintaining a compiler and a linker. A few quotes:
I started evaluating changes by doing none else than reading the source code for the compiler driver. Through that I came across obsolete, outdated, bizarre, undocumented, and useless switches. I looked at each one asking whether it was necessary for the compiler in the long term and evaluating each switch against the requirements listed above. I actually spent most of my time trying to figure out what each switch did. Even asking developers who work on the compiler, I'd sometimes get several different answers. In a few cases, no one knew what the switch did. If our own team couldn't recall a switch's purpose, it's not hard to believe nearly every programmer using Visual C++ will have the same problem.
...
In a good attempt to allow application writers to make use of the latest and greatest hardware, nearly every compiler introduced a new better switch to make your code even faster. Unfortunately, compiler switches end up in make files that rarely get revised. It wasn't uncommon to see a make file specify a G4
or G5
switch even though 80486 and Pentium have long been out of mainstream production. The G-series of switches do not prevent programs from running on older hardware, which was a common misconception. Eventually, Visual C++ just ignored the G3
, G4
, and G5
switches and the program compiled as if G6
had been given to the compiler.
Brandon writes with a dry, understated sense of humour. You have to love “It is difficult to know that Os
and Ot
are ineffective.” or “Very few programs could actually work with these options, so they were both removed from Visual C++ 2005.” Not to mention subheads that call switches “truly evil” or “bizarre”.
An excellent post to give some insight into what the team's decisions involve day to day, and the extent to which MVP and Ladybug feedback make a real difference in those decisions. Keep going, Brandon!
Kate
ps: the topic for the second post came from a comment on the first. Tell him what you want to read and I bet he'll write it.