Portable C Compiler (также известный как PCC или иногда pccm - портативный C компилятор машины) является ранним компилятор для языка программирования Си , написанной Стивеном С. Джонсоном из Bell Labs в середине 1970-х годов, [1] частично на основе идей предложенный Аланом Снайдером в 1973 году [2] [3] и «распространяется как на компилятор C помощью Bell Labs ... с благословения Деннис Ритчи .» [4]
Автор (ы) оригинала | Стивен С. Джонсон |
---|---|
Разработчики) | AT&T Bell Laboratories |
Первый выпуск | 1979 |
Стабильный выпуск | 1.1.0 / 10 декабря 2014 г . |
Написано в | C |
Операционная система | Unix и Unix-подобные |
Тип | Компилятор C |
Лицензия | Лицензия BSD |
Веб-сайт | pcc |
Один из первых компиляторов, который можно было легко адаптировать для вывода кода для различных компьютерных архитектур, компилятор имел долгий срок службы. Он дебютировал в седьмом издании Unix и не поставляется с BSD Unix до выхода 4.4BSD в 1994 году, когда он был заменен на GNU C Compiler . В свое время он был очень влиятельным, настолько, что в начале 1980-х на нем основывалось большинство компиляторов Си. [5] Андерс Магнуссон и Питер А. Йонссон возобновили разработку pcc в 2007 году, значительно переписав его для поддержки стандарта C99 . [6]
Функции
Ключи к успеху [ по чьему мнению? ] pcc были его переносимость и улучшенные диагностические возможности. Компилятор был разработан таким образом , что лишь немногие из его исходных файлов были машинно-зависимым . Он был относительно устойчив к синтаксическим ошибкам и выполнял более тщательные проверки достоверности, чем его современники. [ согласно кому? ]
Первый компилятор C, написанный Деннисом Ритчи , использовал синтаксический анализатор рекурсивного спуска , включал в себя конкретные знания о PDP-11 и полагался на дополнительный машинно-зависимый оптимизатор для улучшения генерируемого кода на языке ассемблера. Напротив, pccm Джонсона был основан на синтаксическом анализаторе , созданном yacc, и использовал более общую модель целевой машины. Оба компилятора создали целевой код языка ассемблера, который затем собрали для создания связываемых объектных модулей.
Более поздние версии PCC, известные в Bell Labs как «QCC» и «RCC», поддерживали другие модели целевой архитектуры. [ необходима цитата ]
Язык, реализованный PCC, был расширенной версией K&R C, которую Бьярн Страуструп назвал «Классическим C», включая void
тип возвращаемого значения (для функций, которые не возвращают никакого значения), перечисления и присваивание структуры. [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] оба смотрят на Clang как на потенциальная замена, и Тео де Раадт из OpenBSD утверждает, что pcc еще не готов к замене gcc, и избавление от gcc не является главным приоритетом. [14] 29 декабря 2009 г. pcc получил возможность создавать функциональный образ ядра x86 OpenBSD . [15]
pcc версии 1.0 был выпущен 1 апреля 2011 года. [16] Начиная с этого выпуска, компилятор поддерживает архитектуры процессоров x86 и x64 и работает в NetBSD , OpenBSD , FreeBSD , различных дистрибутивах Linux и Microsoft Windows . [17] Дальнейшая разработка, включая поддержку большего количества архитектур и интерфейсов FORTRAN 77 и C ++ , продолжается.
PCC был удален из дерева исходных текстов OpenBSD в 2012 году. [18] Его разработка застопорилась, и ни один сопровождающий не предпринял действий, чтобы превратить его в нечто, что могло бы стать практической альтернативой GNU Compiler Collection . [19] [20]
Последняя версия pcc, а именно 1.1.0, была выпущена 10 декабря 2014 года. [21]
Смотрите также
- Комплект компилятора Amsterdam
- Лязг
- Откройте Watcom
Рекомендации
- Перейти ↑ Johnson, SC (1978). «Портативный компилятор: теория и практика». Материалы 5-го симпозиума ACM SIGACT-SIGPLAN по принципам языков программирования. Тусон, Аризона. : 97–104. DOI : 10.1145 / 512760.512771 . S2CID 14390804 .
- ^ Снайдер, А. (1975). «Портативный компилятор для языка C» . Дипломная работа. Массачусетский технологический институт, Кембридж, Массачусетс . Архивировано из оригинала на 2006-09-05 . Проверено 19 июля 2006 .
- ^ Джонсон, SC (1981). Путешествие через портативный C Compiler . Руководство программиста Unix, 7-е издание, том 2 . ISBN 0-03-061743-X.
- ^ а б Страуструп, Бьярн (2002). Соперничество братьев и сестер: C и C ++ (PDF) (Отчет). AT&T Labs.
- ^ Ричи, Деннис М. (1993). «Развитие языка Си» . Вторая конференция ACM SIGPLAN по истории языков программирования. Кембридж, Массачусетс . С. 201–208 . Проверено 30 декабря 2008 .
В начале десятилетия почти каждый компилятор был основан на ПК Джонсона ; к 1985 году было много независимо производимых компиляторных продуктов.
- ^ а б "История ПКК" . pcc - переносимый компилятор c . 2010-06-21 . Проверено 26 июня 2012 .
- ^ Эрдели, Майк (2007-09-15). "Компилятор PCC, лицензированный BSD, импортирован" . OpenBSD Journal . Проверено 17 декабря 2011 .
- ^ Моербик, Отто (15 сентября 2007 г.). "CVS: cvs.openbsd.org: src" . openbsd-cvs (список рассылки).
- ^ Браунли, Дэвид (2007-09-20). "CVS commit: src / dist / pcc" . source-changes (Список рассылки).
- ^ "Компилятор 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 . Проверено 17 декабря 2011 .
Но на самом деле это никогда не было в повестке дня, понимаете. Некоторые думают, что мы ненавидим код GNU. Но дело в том, что мы ненавидим большой код и код с ошибками, который не поддерживается апстримом. Это настоящая проблема ... gcc становится примерно на 5-6% медленнее с каждым выпуском, в нем появляются новые ошибки, генерируется дрянной код и сводит нас с ума. Это просто попытка увидеть, может ли появиться что-нибудь получше.
- ^ де Верд, Поль (2009-12-29). «Призыв к тестированию: pcc и ядро OpenBSD» . OpenBSD Journal . Проверено 17 декабря 2011 .
- ^ Магнуссон, Андерс (2011-04-01). «1.0 Release» . Портативный C Compiler . Проверено 17 декабря 2011 .
- ^ "BSD Fund: фонд pcc" . bsdfund.org . 2011-04-01. Архивировано из оригинала на 2009-01-05 . Проверено 26 июня 2012 .
- ^ Пол Ирофти (2012-04-12). "CVS: cvs.openbsd.org: src" .
- ^ Питер Хесслер (18.06.2012). "Re: История удаления PCC?" .
- ^ Миод Валлат (31.07.2013). «Компиляторы в OpenBSD» .
- ^ Магнуссон, Андерс (10 декабря 2014 г.). «Релиз 1.1.0» . Портативный C Compiler . Проверено 10 декабря 2014 .
Внешние ссылки
- Официальный веб-сайт
- Архив в TUHS