Гонки на вымирание, девяносто пятые выживают

>>>> Врезка Линус и компиляторы


Как мы выяснили, новые версии GCC не дают никаких преимуществ при перекомпиляции ядра, написанном на классическом Си и оптимизированном вручную. Поэтому, Линус (как и большинство остальных программистов-ядерников) не спешат расставаться со своим любимым GCC2.95, чем и вызывают недоумение пользователей. Вот фрагмент переписки, выловленных на далеком забугорном форуме.

From: Linus Torvalds [email blocked]

Subject: Re: support of older compilers

Date:   Thu, 4 Nov 2004 11:38:47 -0800 (PST)

On Thu, 4 Nov 2004, Adam Heath wrote:

> I didn't deny the speed difference of older and newer compilers.

> But why is this an issue when compiling a kernel?  How often do you compile

> your kernel?

First off, for some people that is literally where _most_ of the CPU cycles go.

Second, it's not just that the compilers are slower. Historically, new gcc versions are:

q       slower;

q       generate worse code;

q       buggier.



For a _long_ time, the only reason to upgrade gcc was literally C++ support: basic C support was getting _worse_ with new compilers in pretty much every regard. Things seem to have improved a bit lately. The gcc-3.x series was basically not worth it for plain C until 3.3 or so.

Linus

От:          Linus Torvalds [мыло скипнуто]

Тема:     Re: поддержка старых компиляторов

Date:      Вторник, 4 ноября 2004 11:38:47 -0800 (PST)

Как-то во вторник, 4 ноября 2004, Adam Heath писал:

> Я не отрицаю различия по скорости между старыми и новыми компиляторами.

> Но почему эта проблема встает именно при компиляции ядра?

> Как часто вы перекомпилируете свое ядро?

Во-первых, ядро для многих людей это то место в котором они проводят большую часть своего машинного времени. Во-вторых, дело не только и не столько в том, что компиляторы становятся все медленнее. Исторически, новые версии gcc:

q       все тормознутее;

q       генерируют худший код;

q       багистнее;

На протяжении _многих_лет_, единственной причиной обновления gcc была поддержка Cи++. Классический Си поддерживается все хуже и _хуже_, со всем уважением к его разработчикам.

В последнее время ситуация слегка изменилась к лучшему. До появления gcc 3.3 все нововведения серии gcc 3.x не стоили ухудшения поддержки классического Си.

Linus



Содержание раздела