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