Среди разработчиков набора компиляторов GCC развернулась обширная дискуссия о планах и задачах для будущей ветки GCC 5.0. При этом основной темой размышлений о возможных путях развития GCC, стало его обсуждение в контексте стремительно набирающего популярность проекта LLVM (Low Level Virtual Machine).

Так, активный разработчик GCC Дэвид Малкольм (David Malcolm) из компании Red Hat подробно изложил своё видение будущего проекта, которое сводится к предложению переписать GCC с Си на Си++, разработать полноценный API для подключения плагинов, а также в движении GCC в сторону более модульной структуры – реализации базовой части в виде набора самодостаточных библиотек.

Идея заключается в том, что подобные библиотеки, из которых будет состоять GCC 5, смогут очень легко внедряться в приложения, так же легко, как это делается в LLVM. Дэвид, в частности, заявляет: "Я очень надеюсь, что GCC будет двигаться в сторону коллекции библиотек, которые могут быть свободно внедрены в любые лицензионно-совместимые приложения. LLVM завоевала популярность для случаев, где нужна JIT-компиляция. Я понимаю, что JIT-компиляция сильно отличается от классического предварительного компилирования, которого придерживается проект GCC. В идеале, GCC превратится в набор разделяемых библиотек, которые могут быть слинкованы как статически, так и динамически. Запускаемые файлы превращаются в тонкую обертку, которая лишь вызывает нужные библиотеки".

Приведение GCC к модульной структуре - это очень сложная задача. Поэтому Дэвид добавляет: "Подобная переработка архитектуры сегодняшнего GCC очень сложна (быть может, даже и невозможна), хотя бы потому, что мы не можем однозначно решить, какому отдельному модулю какой код компилятора должен принадлежать. Важно в первую очередь принять некую карту развития - при этом, вероятно, придётся смириться с тем, что модульный GCC 5 будет обладать меньшей функциональностью, чем текущий GCC, будет менее оптимизированным и менее мощным. Я не знаю, возможно ли это осуществить вообще (поэтому я иногда очень пессимистичен к этому проекту), в том числе потому, что многие оплачиваемые разработчики GCC работают на компании, которые не допустят столь масштабных изменений".

Кроме того, препятствием для потенциального сближения GCC и LLVM является то, что компиляторы LLVM поставляются под более либеральной лицензией BSD, которая более любима компаниями и более совместима со сторонним программным обеспечением, тогда как GCC распространяется под лицензией GPLv3, вносящей ряд ограничений при связывании библиотек. Даже если разработчики и согласятся в будущем сфокусироваться на модульности будущего GCC, это потребует немало времени.

Источник: http://www.opennet.ru/opennews/art.shtml?num=33396