суббота, 19 февраля 2011 г.

В компиляторе 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 CPP, которые PCC не поддерживает (пока).

Дополнение: ресурс phoronix.com провел сравнение производительности компиляторов GCC 4.4.5, GCC 4.5.1, LLVM-GCC 4.2.1, Open64 4.2.3 и PCC 0.9.9 20110126. Тестирование производилось в Ubuntu 10.10. В тесте Dhrystone 2 из состава BYTE Unix Benchmark код собранный компилятором PCC оказался на последнем месте по производительности, отстав от GCC 4.4.5 на 45%, а от LLVM-GCC 4.2.1 в 2.3 раза. В тестах Register arithmetic и Floating-Point arithmetic из состава комплекта BYTE Unix Benchmark сгенерированный в PPC код показал примерно одинаковую с GCC 4.4.5 производительность. В тестах Apache, John The Ripper, C-Ray, Himeno, MAFFT, 7-Zip, FLAC и GraphicsMagick проект PCC не был включен в число тестируемых компиляторов.

Комментариев нет:

Отправить комментарий