El compilador portátil de C (también conocido como pcc o, a veces, pccm - máquina compiladora portátil de C) es uno de los primeros compiladores del lenguaje de programación C escrito por Stephen C. Johnson de Bell Labs a mediados de la década de 1970, [1] basado en parte en ideas propuesto por Alan Snyder en 1973, [2] [3] y "distribuido como el compilador de C por Bell Labs ... con la bendición de Dennis Ritchie ". [4]
Autor (es) original (es) | Stephen C. Johnson |
---|---|
Desarrollador (es) | Laboratorios AT&T Bell |
Versión inicial | 1979 |
Lanzamiento estable | 1.1.0 / 10 de diciembre de 2014 |
Escrito en | C |
Sistema operativo | Unix y similar a Unix |
Tipo | Compilador de C |
Licencia | Licencia BSD |
Sitio web | pcc |
Uno de los primeros compiladores que pudo adaptarse fácilmente al código de salida para diferentes arquitecturas de computadora, el compilador tuvo una larga vida útil. Debutó en Seventh Edition Unix y se envió con BSD Unix hasta el lanzamiento de 4.4BSD en 1994, cuando fue reemplazado por GNU C Compiler . Fue muy influyente en su día, tanto que a principios de la década de 1980, la mayoría de los compiladores de C se basaban en él. [5] Anders Magnusson y Peter A Jonsson reiniciaron el desarrollo de pcc en 2007, reescribiéndolo ampliamente para admitir el estándar C99 . [6]
Características
Las claves del éxito [¿ según quién? ] de pcc fueron su portabilidad y capacidades de diagnóstico mejoradas. El compilador fue diseñado para que sólo unos pocos de sus fuente archivos eran dependientes de la máquina . Era relativamente resistente a los errores de sintaxis y realizaba comprobaciones de validez más exhaustivas que sus contemporáneos. [ según quién? ]
El primer compilador de C, escrito por Dennis Ritchie , utilizó un analizador sintáctico descendente recursivo , incorporó conocimientos específicos sobre el PDP-11 y se basó en un optimizador opcional específico de la máquina para mejorar el código en lenguaje ensamblador que generaba. Por el contrario, el pccm de Johnson se basó en un analizador generado por yacc y utilizó un modelo de máquina de destino más general. Ambos compiladores produjeron código en lenguaje ensamblador específico para el destino que luego ensamblaron para producir módulos de objetos enlazables.
Las versiones posteriores de PCC, conocidas en Bell Labs como "QCC" y "RCC", admitían otros modelos de arquitectura de destino. [ cita requerida ]
El lenguaje que implementó PCC fue una versión extendida de K&R C que Bjarne Stroustrup ha llamado "Classic C", incorporando el void
tipo de retorno (para funciones que no devuelven ningún valor), enumeraciones y asignación de estructura. [4]
Versión actual
Anders Magnusson mantiene ahora una nueva versión de pcc, basada en el original de Steve Johnson. [6] El compilador se proporciona bajo la licencia BSD y su desarrollo está financiado por una organización sin fines de lucro llamada BSD Fund. Según Magnusson:
El gran beneficio de esto (aparte de que tiene licencia BSD, para fanáticos de las licencias) es que es rápido, de 5 a 10 veces más rápido que gcc, y al mismo tiempo produce un código razonable. <...> [I] t también es bastante simple de portar ...
- Anders Magnusson [7]
Esta nueva versión se agregó a los árboles de fuentes pkgsrc y OpenBSD de NetBSD en septiembre de 2007, [8] y más tarde al árbol de fuentes principal de NetBSD . [9] Se ha especulado que eventualmente podría usarse para suplantar al compilador GNU C en sistemas operativos basados en BSD, [10] aunque FreeBSD [11] [12] y NetBSD [13] están considerando a Clang como un reemplazo potencial, y Theo de Raadt de OpenBSD afirma que pcc aún no está listo para ser un reemplazo de gcc, y la eliminación de gcc no es la máxima prioridad. [14] El 29 de diciembre de 2009, pcc fue capaz de construir una imagen funcional del kernel de OpenBSD x86 . [15]
pcc versión 1.0 se publicó el 1 de abril de 2011. [16] A partir de esta versión, el compilador admite arquitecturas de procesador x86 y x64 y se ejecuta en NetBSD , OpenBSD , FreeBSD , varias distribuciones de Linux y Microsoft Windows . [17] Continúa el desarrollo adicional, incluido el soporte para más arquitecturas y las interfaces de FORTRAN 77 y C ++ .
PCC se eliminó del árbol de fuentes de OpenBSD en 2012. [18] El desarrollo se había estancado y ningún mantenedor había avanzado para desarrollarlo en algo que pudiera ser una alternativa práctica a la colección de compiladores GNU . [19] [20]
La última versión de pcc, a saber, 1.1.0, se publicó el 10 de diciembre de 2014. [21]
Ver también
- Kit del compilador de Amsterdam
- Sonido metálico
- Abrir Watcom
Referencias
- ^ Johnson, SC (1978). "Un compilador portátil: teoría y práctica". Actas del V Simposio ACM SIGACT-SIGPLAN sobre Principios de Lenguajes de Programación. Tucson, Arizona. : 97–104. doi : 10.1145 / 512760.512771 . S2CID 14390804 .
- ^ Snyder, A. (1975). "Un compilador portátil para el lenguaje C" . Tesis de maestría. MIT, Cambridge, Mass . Archivado desde el original el 5 de septiembre de 2006 . Consultado el 19 de julio de 2006 .
- ^ Johnson, Carolina del Sur (1981). Un recorrido por el compilador de C portátil . Manual del programador de Unix, séptima edición, volumen 2 . ISBN 0-03-061743-X.
- ^ a b Stroustrup, Bjarne (2002). Rivalidad entre hermanos: C y C ++ (PDF) (Informe). AT&T Labs.
- ^ Ritchie, Dennis M. (1993). "El desarrollo del lenguaje C" . La segunda conferencia ACM SIGPLAN sobre Historia de los lenguajes de programación. Cambridge, Massachusetts . págs. 201–208 . Consultado el 30 de diciembre de 2008 .
A principios de la década, casi todos los compiladores se basaban en el pcc de Johnson ; en 1985 había muchos productos de compilación producidos de forma independiente.
- ^ a b "historial de pcc" . pcc: compilador portátil de c . 2010-06-21 . Consultado el 26 de junio de 2012 .
- ^ Erdely, Mike (15 de septiembre de 2007). "Compilador PCC con licencia BSD importado" . Diario de OpenBSD . Consultado el 17 de diciembre de 2011 .
- ^ Moerbeek, Otto (15 de septiembre de 2007). "CVS: cvs.openbsd.org: src" . openbsd-cvs (lista de correo).
- ^ Brownlee, David (20 de septiembre de 2007). "Confirmación CVS: src / dist / pcc" . source-changes (lista de correo).
- ^ "¿El compilador GCC finalmente fue reemplazado por PCC?" . /. 2007-09-17.
- ^ Larabel, Michael (12 de mayo de 2012). "FreeBSD 10 para usar el compilador Clang, desaproveche GCC" . Phoronix . Archivado desde el original el 10 de abril de 2015 . Consultado el 23 de abril de 2015 .
- ^ Brooks, Davis (5 de noviembre de 2012). "HEADS UP: Clang ahora es el predeterminado en x86" (lista de correo) . Consultado el 23 de abril de 2015 .
- ^ Joerg, Sonnenberger (17 de octubre de 2013). "Importando LLVM / Clang" (lista de correo) . Consultado el 23 de abril de 2015 .
- ^ Matzan, Jem (15 de octubre de 2007). "Más sobre el nuevo compilador de OpenBSD" . El informe Jem . Archivado desde el original el 4 de enero de 2012 . Consultado el 17 de diciembre de 2011 .
Pero esa nunca ha sido realmente la agenda, ¿ven? Algunas personas piensan que odiamos el código GNU. Pero lo que pasa es que odiamos el código grande y el código con errores que el upstream no mantiene. Ese es el verdadero problema ... gcc se vuelve un 5-6% más lento en cada versión, tiene nuevos errores, genera código de mala calidad y nos vuelve locos. Esto es solo un intento de ver si puede aparecer algo mejor.
- ^ de Weerd, Paul (29 de diciembre de 2009). "Convocatoria de pruebas: pcc y el kernel de OpenBSD" . Diario de OpenBSD . Consultado el 17 de diciembre de 2011 .
- ^ Magnusson, Anders (1 de abril de 2011). "Versión 1.0" . Compilador de C portátil . Consultado el 17 de diciembre de 2011 .
- ^ "Fondo BSD: fondo pcc" . bsdfund.org . 2011-04-01. Archivado desde el original el 5 de enero de 2009 . Consultado el 26 de junio de 2012 .
- ^ Paul Irofti (12 de abril de 2012). "CVS: cvs.openbsd.org: src" .
- ^ Peter Hessler (18 de junio de 2012). "Re: ¿Historia detrás de la eliminación de PCC?" .
- ^ Miod Vallat (31 de julio de 2013). "Compiladores en OpenBSD" .
- ^ Magnusson, Anders (10 de diciembre de 2014). "Versión 1.1.0" . Compilador de C portátil . Consultado el 10 de diciembre de 2014 .
enlaces externos
- Página web oficial
- Archivo en TUHS