I'm happy to see people feeling that GNOME 2.14 is faster. Means that weeks of our optimization work is worth more than "you rock!" comments. (-:

I think Calum has a point about the C++ template thing. He's absolutely right, the C++ compiler cannot determine whether a C++ source code can be compiled in a finite time or will loop forever... That's indeed an obvious result of being Turing-complete. The C preprocessor on the other hand, has been designed carefully enough to not let such a thing in. It's at best a pushdown automata (whose states being the defined macros and their values that can take a finite different values, and the #include stack.) As a result, you can write a C preprocessor that will either process the input, or decide that it will loop forever without putting an arbitrary limit on the recursion depth. At that point you may do what Python does and refuse to get into the infinite recursion and continue. That's not how most of preprocessors are implemented though.