Портативный компилятор C - Portable C Compiler

Портативный компилятор C
Оригинальный автор (ы)Стивен С. Джонсон
Разработчики)AT&T Bell Laboratories
изначальный выпуск1979; 41 год назад (1979)
Стабильный выпуск
1.1.0 / 10 декабря 2014 г.; 5 лет назад (2014-12-10)
Написано вC
Операционная системаUnix и Unix-подобный
ТипC Компилятор
ЛицензияЛицензия BSD
Интернет сайтpcc.ludd.ltu.se

В Портативный компилятор C (также известен как pcc или иногда pccm - переносимая машина компилятора C) является ранним компилятор для Язык программирования C написано Стивен С. Джонсон из Bell Labs в середине 1970-х,[1] частично основанные на идеях, предложенных Алан Снайдер в 1973 г.,[2][3]и "распространяется как то Компилятор C от Bell Labs ... с благословения Деннис Ричи."[4]

Один из первых компиляторов, который можно было легко адаптировать для вывода кода для различных компьютерных архитектур, компилятор имел долгий срок службы. Он дебютировал в Седьмое издание Unix и поставляется с BSD Unix до выпуска 4.4BSD в 1994 году, когда он был заменен Компилятор GNU C. В свое время он был очень влиятельным, настолько, что в начале 1980-х годов на нем было основано большинство компиляторов C.[5] Андерс Магнуссон и Питер А. Йонссон возобновили разработку pcc в 2007 году, существенно переписав ее для поддержки C99 стандарт.[6]

Функции

Ключи к успеху[согласно кому? ] ПКК были его переносимость и улучшенные диагностические возможности. В компилятор был спроектирован так, что только некоторые из его источник файлы мы машинно-зависимый. Это было относительно надежно синтаксические ошибки и выполнил более тщательные проверки действительности, чем его современники.[согласно кому? ]

Первый компилятор C, написанный Деннис Ричи, использовал парсер рекурсивного спуска, включает в себя конкретные знания о PDP-11, и полагался на дополнительный машинно-зависимый оптимизатор для улучшения сгенерированного кода языка ассемблера. Напротив, pccm Джонсона был основан на yacc -сгенерировал парсер и использовал более общую модель целевой машины. Оба компилятора создали целевой код языка ассемблера, который затем собрали для создания связываемых объектных модулей.

Более поздние версии PCC, известные в Bell Labs как «QCC» и «RCC», поддерживали другие модели целевой архитектуры.[нужна цитата ]

Язык, реализованный в PCC, был расширенной версией K&R C который Бьярне Страуструп называется "Classic C", включая пустота тип возвращаемого значения (для функций, не возвращающих никакого значения), перечисления и присвоение структуры.[4]

Текущая версия

Новая версия pcc, основанная на оригинале Стива Джонсона, сейчас поддерживается Андерсом Магнуссоном.[6] Компилятор предоставляется под Лицензия BSD и его разработка финансируется некоммерческой организацией BSD Fund. По словам Магнуссона:

Большим преимуществом этого (помимо того, что он имеет лицензию BSD для фанатов лицензий) является то, что он работает быстро, в 5-10 раз быстрее, чем gcc, но при этом производит разумный код. <...> [I] t тоже довольно просто портировать ...

— Андерс Магнуссон[7]

Эта новая версия была добавлена ​​в NetBSD pkgsrc и OpenBSD исходные деревья в сентябре 2007 г.,[8] а позже в основной NetBSD исходное дерево.[9] Были некоторые предположения, что в конечном итоге он может быть использован для замены компилятора GNU C в операционных системах на основе BSD.[10] хотя FreeBSD[11][12] и NetBSD[13] оба ищут Лязг в качестве потенциальной замены, и Тео де Раадт из OpenBSD утверждает, что pcc еще не готов к замене gcc, и избавление от gcc не является главным приоритетом.[14] 29 декабря 2009 г. pcc получил возможность создавать функциональную архитектуру x86. OpenBSD образ ядра.[15]

pcc версии 1.0 был выпущен 1 апреля 2011 года.[16]Начиная с этого выпуска, компилятор поддерживает x86 и x64 архитектуры процессора и работает на NetBSD, OpenBSD, FreeBSD, разные Linux дистрибутивы и Майкрософт Виндоус.[17]Дальнейшее развитие, включая поддержку большего количества архитектур, и FORTRAN 77 и C ++ передние концы, продолжается.

PCC был удален из OpenBSD исходное дерево в 2012.[18] Разработка застопорилась, и ни один сопровождающий не предпринял действий, чтобы превратить его во что-то, что могло бы стать практической альтернативой Коллекция компиляторов GNU.[19][20]

Последняя версия pcc, а именно 1.1.0, была выпущена 10 декабря 2014 года.[21]

Смотрите также

Рекомендации

  1. ^ Джонсон, S.C. (1978). «Портативный компилятор: теория и практика». Материалы 5-го Симпозиума ACM SIGACT-SIGPLAN по принципам языков программирования. Тусон, Аризона.: 97–104. Дои:10.1145/512760.512771.
  2. ^ Снайдер, А. (1975). "Портативный компилятор для языка C". Дипломная работа. Массачусетский технологический институт, Кембридж, Массачусетс. Архивировано из оригинал на 2006-09-05. Получено 2006-07-19.
  3. ^ Джонсон, S.C. (1981). Обзор портативного компилятора C. Руководство программиста Unix, 7-е издание, том 2. ISBN  0-03-061743-X.
  4. ^ а б Страуструп, Бьярне (2002). Соперничество братьев и сестер: C и C ++ (PDF) (Отчет). AT&T Labs.
  5. ^ Ричи, Деннис М. (1993). «Развитие языка Си». Вторая конференция ACM SIGPLAN по истории языков программирования. Кембридж, Массачусетс. стр. 201–208. Получено 2008-12-30. В начале десятилетия почти каждый компилятор был основан на Джонсоне. pcc; к 1985 году было много независимо производимых компиляторов.
  6. ^ а б "история ПКК". pcc - портативный компилятор c. 2010-06-21. Получено 2012-06-26.
  7. ^ Эрдели, Майк (2007-09-15). "Компилятор PCC, лицензированный BSD, импортирован". Журнал OpenBSD. Получено 2011-12-17.
  8. ^ Моербик, Отто (15 сентября 2007 г.). "CVS: cvs.openbsd.org: src". openbsd-cvs (Список рассылки).
  9. ^ Браунли, Дэвид (2007-09-20). "CVS commit: src / dist / pcc". источник-изменения (Список рассылки).
  10. ^ "Компилятор GCC, наконец, заменен PCC?". /. 2007-09-17.
  11. ^ Ларабель, Майкл (12 мая 2012 г.). «FreeBSD 10 для использования компилятора Clang, исключение GCC». Фороникс. В архиве из оригинала 10 апреля 2015 г.. Получено 23 апреля 2015.
  12. ^ Брукс, Дэвис (5 ноября 2012 г.). «ГОЛОВЫ ВВЕРХ: Clang теперь по умолчанию на x86» (Список рассылки). Получено 23 апреля 2015.
  13. ^ Йорг, Зонненбергер (17 октября 2013 г.). «Импорт LLVM / Clang» (Список рассылки). Получено 23 апреля 2015.
  14. ^ Мацан, Джем (2007-10-15). «Подробнее о новом компиляторе OpenBSD». Отчет Джема. Архивировано из оригинал на 2012-01-04. Получено 2011-12-17. Но на самом деле это никогда не входило в повестку дня, понимаете. Некоторые думают, что мы ненавидим код GNU. Но дело в том, что мы ненавидим большой код и код с ошибками, который не поддерживается апстримом. Это настоящая проблема ... gcc становится примерно на 5-6% медленнее с каждым выпуском, имеет новые ошибки, генерирует дрянной код и сводит нас с ума. Это просто попытка увидеть, может ли появиться что-нибудь получше.
  15. ^ де Верд, Поль (2009-12-29). «Призыв к тестированию: pcc и ядро ​​OpenBSD». Журнал OpenBSD. Получено 2011-12-17.
  16. ^ Магнуссон, Андерс (01.04.2011). «Версия 1.0». Портативный компилятор C. Получено 2011-12-17.
  17. ^ «BSD Fund: pcc fund». bsdfund.org. 2011-04-01. Архивировано из оригинал на 2009-01-05. Получено 2012-06-26.
  18. ^ Пол Ирофти (12 апреля 2012 г.). "CVS: cvs.openbsd.org: src".
  19. ^ Питер Хесслер (18.06.2012). "Re: История удаления PCC?".
  20. ^ Миод Валлат (31.07.2013). «Компиляторы в OpenBSD».
  21. ^ Магнуссон, Андерс (10 декабря 2014 г.). «Выпуск 1.1.0». Портативный компилятор C. Получено 2014-12-10.

внешняя ссылка