В компиляторе PCC обеспечена возможность сборки FreeBSD

Компилятор PCC (Portable C Compiler), развиваемый с целью создания распространяемой под лицензий BSD альтернативы Си-компилятора из состава GCC, доведен до состояния при котором удалось произвести сборку FreeBSD-CURRENT на платформе amd64, без внесения каких-либо правок. Более того, по заявлению ключевого разработчика, состояние PCC достаточно стабильно и можно планировать скорый выпуск релиза PCC 1.0.

PCC распространяется в рамках лицензии BSD и нацелен на создание полноценного компилятора для языка Си, полностью совместимого со стандартом C99 и частично совместимого с GCC. PCC является в значительной степени переработанным вариантом компилятора Portable C Compiler, разработанного S. C. Johnson в конце 70-х годов прошлого века. Основным разработчиком проекта является Anders Magnusson из команды NetBSD.

Процесс компиляции осуществляется в несколько раз быстрее, чем в GCC, при достаточно сносном коде на выходе. Например, сборка тестового комплекта ByteBench, выполненная при помощи gcc 4.1.3 (режим оптимизации "-O2") оказалась в большинстве тестов лишь на несколько процентов быстрее сборки с использованием PCC (исключение составил тест dhry2reg, при котором PCC отстал почти в два раза и тест hanoi, при котором отставание было на уровне 30%).

Размер архива последней сборки PCC занимает 1948 Кб, что в шесть раз больше, чем три года назад и в три раза больше, чем в прошлом году. Финансирование доведения PCC до первого стабильного релиза предоставляет проект BSD Fund. Кроме FreeBSD, прогресс сборки систем при помощи PCC также отмечается для ОС NetBSD и OpenBSD.

Энтузиастам, желающим поэкспериментировать со сборкой FreeBSD при помощи PCC, следует установить свежие версии пакетов pcc и pcc-libs, после чего выполнить сборку:

       make CC=/usr/local/bin/pcc WITHOUT_GROFF=1 WITHOUT_CLANG=1 \            WITHOUT_TOOLCHAIN=1 WITHOUT_BOOT=1 WITHOUT_NS_CACHING=1    

Сборка groff не производится в виду отсутствия поддержки C++ в pcc. При сборке без "WITHOUT_TOOLCHAIN" компиляция может пройти успешно, но есть вероятность проявления одной ошибки, которая еще остается неисправленной. Директива "WITHOUT_BOOT" указана, так как результирующий код загрузчика при сборке при помощи PCC оказывается немного больше допустимого размера (проблема легко исправима). "WITHOUT_NS_CACHING" используется, так как в коде присутствуют расширения, свойственные GNU C++.

©  OpenNet