>>>> Врезка Линус и компиляторы
Как мы выяснили, новые версии 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