Open-source компилятор переведен в третий класс
 
Новая версия GCC - первое крупное обновление с момента выхода в 1992 году версии 2.0.

[Стивен Шэнкленд ]

В понедельник программисты-добровольцы выпустили версию 3.0 GCC. Это не просто известный проект ПО с открытым исходным кодом - это одна из основ всех подобных проектов. GCC - компилятор, преобразующий написанный программистом код в последовательность инструкций, исполняемых процессором. Он используется для создания всего от Linux и разных версий BSD Unix до такого ПО высокого уровня, как веб-сервер Apache, пользовательский интерфейс Gnome и программа немедленного обмена сообщениями Jabber. GCC может работать на микропроцессорах из более 40 разных семейств и генерировать код для них.

Почти десять лет назад, когда Эрик Оллман (Eric Allman) создавал свой open-source сервер e-mail Sendmail, GCC представлял собой всего лишь набор компиляторов, который Оллману приходилось поддерживать, чтобы его ПО могло работать на разных компьютерах. "Я пользовался многими компиляторами, и GCC был одним из них, - рассказывает он. - Теперь GCC настолько распространен, что кроме него почти ничего не нужно". Но GCC используется не только в проектах open source. Позволяя создавать программы для десятков разных процессоров, он широко применяется и для разработки многочисленных частных систем. Даже Microsoft поставляет этот компилятор в составе своего ПО Interix, обеспечивающего исполнение Unix-программ на Windows-машинах.

Версия 3.0, которая разрабатывалась более года, наделяет компилятор рядом новых возможностей. Среди них мощные средства генерации инструкций для процессоров Intel - компания несколько лет финансирует эту разработку. Способности GCC по отношению к другим процессорам также улучшены. По словам разработчика GCC из Red Hat Джеффа Лау (Jeff Law), теперь компилятор поддерживает процессоры Intel Itanium и XScale, Motorola MCore 210 и 340, Mitsubishi D30V, Atmel AVR и Fujitsu FR30.

Новая версия GCC - первое крупное обновление ПО с момента выхода в 1992 году версии 2.0. С тех пор GCC перенес болезнь, которую многие расценивают как одну из самых серьезных угроз движению open source: раскол, когда две группы программистов начинают вести разработку в разных направлениях.

История GCC
Впервые разработку GCC начал основатель Free Software Foundation Ричард Столлман (Richard Stallman). Версия 1.0 была готова в мае 1987 года. Аббревиатура GCC тогда означала GNU C Compiler, так как это был компилятор программ, написанных на языке С, для проекта Столлмана по созданию клона Unix GNU's Not Unix(GNU). Теперь, так как GCC применяется для программ, написанных на многих других языках, GCC принято расшифровывать как GNU Compiler Collection.

Столлман создал концепцию ПО free software - которое он определил не как "бесплатное", а как свободно распространяемое при условии, что исходный код остается открытым. Он выпустил GCC на условиях General Public License, лицензии, которая теперь используется для многих проектов open source. Ядро Linux, ставшее сердцем проекта операционной системы GNU, также распространяется на условиях GPL.

С 1999 года разработку GCC активно поддерживал дистрибьютор Linux Red Hat - после покупки компании Cygnus Solutions, которая занималась тем, что адаптировала GCC для новых процессоров. "Первые заказчики Cygnus применяли GCC для своих частных систем, таких как сетевое оборудование, - рассказывает основатель Cygnus, а теперь главный инженер Red Hat Майкл Тиманн (Michael Tiemann). - Первым крупным заказчиком Cygnus стала Nortel в 1990 году. Год спустя к ней присоединились Intel и Ericsson, а в 1992 - Cisco Systems и Alcatel". Тимман был активным участником ранних разработок компилятора. Он начал с версии 1.0 в 1987 году и добавил к GCC несколько важных новых функций, включая способность работать на процессоре National Semiconductor 32032 и воспринимать ПО, написанное на языке С++. Тиманн участвовал и в переводе GCC на процессоры Motorola 8800, Intel 386, MIPS и Sun Sparc. Кроме того, он помог заложить основу для поддержки процессоров с "очень длинными словами инструкций" (VLIW), такими как Intel Itanium.

Один из аргументов критиков GCC заключается в том, что это компилятор слишком широкого назначения: возможность применения для столь многих микропроцессоров и языков программирования означает, что результирующий код получается неоптимальным. Но Тиманн защищает GCC. По его словам, решая проблему создания универсального компилятора, разработчики GCC нашли приемы, применимые ко многим разным процессорам. "Генетический материал, охватывающий все эти архитектуры, позволяет создать универсальный компилятор, который работает лучше специализированного", - пояснил он. Например, модификация GCC для процессоров MIPS и Sun заложила основу для адаптации к будущим процессорам Intel, перенявшим их конструкцию.

Кроме того, в GCC есть модули, оптимизирующие ПО для конкретных процессоров. "Некоторые компании тратят по 50-100 млн $ на разработку компилятора для определенной архитектуры, который обеспечил бы им лидерство, - говорит Тиманн. - Но по-моему способность компилятора с общей инфраструктурой поддерживать широкий спектр микропроцессоров и быстро адаптироваться к новым микропроцессорам по мере их появления обеспечивают наилучшие возможности для извлечения максимума выгод из закона Мура".

Cygnus, зарабатывающая на момент присоединения к Red Hat около 20 млн $ в год, во многом построила свой успех на "встраиваемых" конструкциях, таких как сетевые маршрутизаторы и другое коммуникационное оборудование. Первые инвестиции Intel в Cygnus были связаны с разработкой GCC-поддержки для коммуникационного процессора Intel i960, который уже снят с производства. Сегодня GCC охватывает весь ландшафт вычислительной техники. "Поддерживая так много машин и платформ, он стал чем-то вроде компилятора по умолчанию, - говорит Столлман. - Людям нужна возможность везде применять один и тот же компилятор".

Раскол
Пока Тиманн работал в Cygnus, его компания оказывала сильное влияние на GCC. Однако у назначенного организацией Free Software Foundation куратора GCC не было времени на то, чтобы проанализировать все изменения в GCC, и из-за разногласий по поводу того, как обойтись с этими изменениями, в 1997 году Cygnus решила создать новую версию GCC - EGCS.

В EGCS, по словам Тиманна, Cygnus доказала свою способность серьезно влиять на развитие GCC, не позволяя своим собственным интересам подавлять другие приоритеты. Через некоторое время раскол был преодолен, и в апреле 1999 года Free Software Foundation согласилась использовать код EGCS, а проект EGCS - самоликвидироваться и продолжить работу над GCC. Это были бескровный раскол и бескровное воссоединение", - отметил Тиманн.

[Источник ZDNet.ru]

[ опубликовано 22/06/2001 ]



Библиотека ЛинуксЦентра