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

30 января 2011 года

Компилятор PCC (Архивная копия от 23 февраля 2009 на Wayback Machine) (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 (Архивная копия от 8 февраля 2012 на Wayback Machine), Open64 4.2.3 (Архивная копия от 27 февраля 2015 на Wayback Machine) и 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 не был включен в число тестируемых компиляторов.

Источники

править
 
 
Creative Commons
Эта статья содержит материалы из статьи «В компиляторе PCC обеспечена возможность сборки FreeBSD», опубликованной OpenNET и распространяющейся на условиях лицензии Creative Commons Attribution (CC BY) — указание автора, источник и лицензию.
 
Эта статья загружена автоматически ботом NewsBots в архив и ещё не проверялась редакторами Викиновостей.
Любой участник может оформить статью: добавить иллюстрации, викифицировать, заполнить шаблоны и добавить категории.
Любой редактор может снять этот шаблон после оформления и проверки.

Комментарии

Викиновости и Wikimedia Foundation не несут ответственности за любые материалы и точки зрения, находящиеся на странице и в разделе комментариев.