Přenosný kompilátor C - Portable C Compiler

Přenosný kompilátor C.
Původní autoři Stephen C. Johnson
Vývojáři AT & T Bell Laboratories
První vydání 1979 ; Před 42 lety ( 1979 )
Stabilní uvolnění
1.1.0 / 10. prosince 2014 ; před 6 lety ( 2014-12-10 )
Napsáno C
Operační systém Unix a podobné Unixu
Typ Kompilátor C.
Licence Licence BSD
webová stránka pcc .ludd .ltu .se

Portable C (také známý jako PCC nebo někdy pccm - Portable C stroj) je časný kompilátor pro C programovací jazyk napsal Stephen C. Johnson z Bell Labs v polovině 1970, která se zakládá na myšlenky navržené Alan Snyder v roce 1973, a „rozdělen na kompilátoru C Bell Labs ... s požehnáním Dennis Ritchie .“

Jako jeden z prvních kompilátorů, které bylo možné snadno přizpůsobit výstupnímu kódu pro různé počítačové architektury, měl kompilátor dlouhou životnost. To debutovalo v sedmém ročníku Unix a dodáván s BSD Unixu až do vydání 4.4BSD v roce 1994, kdy byl nahrazen C Compiler GNU . Ve své době to bylo velmi vlivné, a to natolik, že na začátku 80. let na tom byla založena většina kompilátorů C. Anders Magnusson a Peter A Jonsson obnovili vývoj PCC v roce 2007 a rozsáhle ho přepsali, aby podporoval standard C99 .

Funkce

Klíčem k úspěchu pcc byla jeho přenositelnost a vylepšené diagnostické schopnosti. Kompilátor byl navržen tak, že jen málo z jeho zdrojových souborů jsou závislá na proveden stroje . Byl relativně robustní na chyby syntaxe a prováděl důkladnější kontroly platnosti než jeho současníci.

První kompilátor C, napsaný Dennisem Ritchiem , používal rekurzivní analyzátor sestupu , začlenil specifické znalosti o PDP-11 a spoléhal na volitelný optimalizátor specifický pro stroj, aby vylepšil generovaný kód jazyka sestavení. Naproti tomu Johnsonův počítač cmcm byl založen na analyzátoru generovaném yacc a použil obecnější model cílového stroje. Oba kompilátory vytvořily kód jazyka sestavení specifický pro cíl, který poté sestavili a vytvořili propojitelné objektové moduly.

Pozdější verze PCC, známé v Bell Labs jako „QCC“ a „RCC“, podporovaly další modely cílové architektury.

Jazyk, který PCC implementovala, byla rozšířená verze K&R C, kterou Bjarne Stroustrup nazval „Classic C“, zahrnující voidnávratový typ (pro funkce, které nevracejí žádnou hodnotu), výčty a přiřazení struktury.

Současná verze

Anders Magnusson nyní spravuje novou verzi pcc, založenou na originálu Steva Johnsona. Kompilátor je poskytován pod licencí BSD a jeho vývoj je financován neziskovou organizací s názvem BSD Fund. Podle Magnussona:

Velkou výhodou (kromě toho, že je licencován BSD, pro licenční geeky) je, že je rychlý, 5-10krát rychlejší než gcc, a přitom stále produkuje rozumný kód. <...> [I] t je také velmi snadné přenášet ...

-  Anders Magnusson

Tato nová verze byla přidána do zdrojových stromů NetBSD pkgsrc a OpenBSD v září 2007 a později do hlavního zdrojového stromu NetBSD . Existovaly určité spekulace, že by to nakonec mohlo být použito k nahrazení kompilátoru GNU C na operačních systémech založených na BSD, ačkoli FreeBSD a NetBSD hledají Clang jako potenciální náhradu a Theo de Raadt z OpenBSD tvrdí, že pcc není připraven ještě bude nahrazením gcc a likvidace gcc není nejvyšší prioritou. 29. prosince 2009 byl počítač schopen vytvářet funkční bitovou kopii jádra x86 OpenBSD .

PCC verze 1.0 byla vydána 1. dubna 2011. Od této verze kompilátor podporuje architektury procesorů x86 a x64 a běží na NetBSD , OpenBSD , FreeBSD , různých distribucích Linuxu a Microsoft Windows . Další vývoj, včetně podpory více architektur a front -endů FORTRAN 77 a C ++ , pokračuje.

PCC byl odstraněn ze zdrojového stromu OpenBSD v roce 2012. Vývoj na něm se zastavil a žádný správce nezasáhl, aby jej vyvinul do něčeho, co by mohlo být praktickou alternativou k GNU Compiler Collection .

Poslední verze pcc, konkrétně 1.1.0, byla vydána 10. prosince 2014.

Viz také

Reference

externí odkazy