Archive for June, 2010

Shrek Distances

I’m sure I’m not the only person troubled by the loose geography in the Shrek movies. In the first movie Shrek takes a couple of days to get to the dragon’s castle. In the second movie Shrek and Fiona appear to take a few days to get from Shrek’s swamp to Far Far Away by coach. However, in the fourth movie, Shrek walks from his swamp to the dragon’s castle and then to Far Far Away all in a single night. There is no explanation. How is this possible?

Even allegorical fairy tales are weakened by a lack of internal story consistency.

Comments (1)

GCC in C++

I’m very pleased to see that the GCC steering committee has agreed to permit GCC to be written in C++. At one time RMS, who is a member of the steering committee, had felt that C++ was never appropriate for systems programs like GCC. It’s good to see that he has apparently come around.

There has been a long effort to prepare for this, by moving GCC’s code base from C to the common subset of C and C++. While people naturally think of C++ as an extension to C, they are different languages and there is a lot of C code which is not valid C++. In the GCC code base, one of the biggest issues was that enums are more restricted by the type system in C++ than they are in C. Another was that in C++ you may not use the same name as a typedef and a struct tag, except for the special case of making the struct tag be a typedef for the struct itself.

Gabriel Dos Reis did the first substantial work on moving the GCC code base to the common subset, and many other people contributed. I think it’s fair to say that I did the lion’s share of the work, starting with my surprise presentation on the advantages of C++ at the 2008 GCC Summit. I did a lot of work to improve the -Wc++-compat warning option to warn about C code which was not in the C/C++ common subset, and I did a lot of work to make GCC code compile with that option without warnings.

C++ will not magically make the GCC code base better. However, I believe that it will give us some useful tools to incrementally improve the code base over time, making it easier to read, easier to modify, and more efficient. I say this not based on theory, but on my experiences with gold and with the gccgo frontend. I’ve already started writing some draft C++ coding conventions which I hope we can use to guide our efforts.

Comments (4)

« Previous Page « Previous Page Next entries »