Michael Tiemann CTO, Red Hat
Why did Red Hat decide to ship a development snapshot of GCC instead of the
most recent released version, 2.95.2?
There was a lot of discussion about this on Slashdot when Red Hat 7 shipped,
and with 20/20 hindsight, it appears that no better technical decision could
have been made. I will leave it to speculation as to whether we could have
navigated certain political minefields better, but let me explain the
rationale again.
Red Hat has many different constituencies, ranging from enterprise customers
to ISVs to kernel developers to systems vendors. It would have been great if
GCC 3.0 had been a released compiler and had all the quality, performance,
functionality, and features that our various constituents required. Alas, GCC
3.0 is very much a work in progress, and while we've contributed significantly
to that work (many Red Hat engineers are full-time GCC developers), GCC 3.0 is
still quite a ways off. At the same time, the latest released version of the
compiler, 2.95.2, had a number of significant issues that made it an
inappropriate choice. There were issues related to newer kernel development,
issues related to newer glibc development, issues related to the ever-changing
C++ standard, and issues related to processor support (we wanted to make Red
Hat 7 a first-class IA-64 development platform). After careful analysis, we
concluded that if we tried to bring 2.95.2 up to the level that we required,
it would duplicate large amounts of work that we and others had already done
on the development snapshot. We decided it would be better to stabilize that
snapshot, than add more features to a compiler that had already given us a
certain amount of trouble. I think that Richard Henderson, one of the main
GCC developers summed it up best on the kernel developer's mailing list:
If you want to blame someone in Red Hat for making the decision to ship a gcc
snapshot, then you might as well blame me.
The reasons are the following:
1. 2.95 is the least stable release that we (the fsf gcc team) have shipped
in a long time. It does ok on x86, but is pathetic on the other platforms
that Red Hat cares about -- especially Alpha.
The late July snapshot we shipped is most definitely more stable, largely I
think due to Geoff's automated regression tester bitching at people when they
break the tree.
2. C++ in 2.95 is already ABI incompatible with egcs 1.1 and gcc 3.0, so