stringtranslate.com

Compilador C portátil

El compilador portátil de C (también conocido como pcc o, a veces, pccm - máquina de compilación portátil de C) es un compilador temprano para el 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 propuestas 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]

Al ser uno de los primeros compiladores que se podía adaptar fácilmente para generar código para diferentes arquitecturas informáticas, el compilador tuvo una larga vida útil. Debutó en la Séptima Edición de Unix y se envió con BSD Unix hasta el lanzamiento de 4.4BSD en 1994, cuando fue reemplazado por el compilador GNU C. Fue muy influyente en su época, 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 que fuera compatible con el estándar C99 . [6]

Características

Las características principales de pcc son su portabilidad y sus capacidades de diagnóstico mejoradas. El compilador fue diseñado de modo que solo unos pocos de sus archivos fuente dependan de la máquina . Es relativamente resistente a los errores de sintaxis y realiza verificaciones de validez más exhaustivas que sus contemporáneos. [ ¿según quién? ]

El primer compilador de C, escrito por Dennis Ritchie , utilizaba un analizador descendente recursivo , incorporaba conocimiento específico sobre el PDP-11 y se basaba 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 basaba en un analizador generado por yacc y utilizaba un modelo de máquina de destino más general. Ambos compiladores producían código en lenguaje ensamblador específico del destino que luego ensamblaban 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 implementa PCC es una versión extendida de K&R C que Bjarne Stroustrup ha llamado "C clásico", incorporando el voidtipo de retorno (para funciones que no devuelven ningún valor), enumeraciones y asignación de estructura. [4]

Versión actual

Anders Magnusson mantiene una nueva versión de pcc, basada en la 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 :

Su gran beneficio (aparte de que tiene licencia BSD, para los fanáticos de las licencias) es que es rápido, 5 a 10 veces más rápido que gcc, y al mismo tiempo produce código razonable. <...> [Y] también es bastante simple de portar...

—Anders  Magnusson [7]

Esta nueva versión fue añadida a los árboles de código fuente de NetBSD pkgsrc y OpenBSD en septiembre de 2007, [8] y más tarde al árbol de código fuente principal de NetBSD . [9] Se había especulado sobre la posibilidad de que pudiera utilizarse eventualmente para suplantar al compilador C de GNU en sistemas operativos basados ​​en BSD, [10] aunque FreeBSD [11] [12] y NetBSD [13] están considerando a Clang como un posible reemplazo, y Theo de Raadt de OpenBSD afirma que pcc aún no está listo para ser un reemplazo de gcc, y que la eliminación de gcc no es una prioridad principal. [14] El 29 de diciembre de 2009, pcc se volvió capaz de construir una imagen funcional del núcleo de OpenBSD x86. [15]

La versión 1.0 de pcc se lanzó el 1 de abril de 2011. [16] A partir de esta versión, el compilador admite arquitecturas de procesador x86 y x86-64 y se ejecuta en NetBSD , OpenBSD , FreeBSD , varias distribuciones de Linux y Microsoft Windows . [17] El desarrollo adicional, que incluye soporte para más arquitecturas y front-ends FORTRAN 77 y C++ , continúa a partir de 2022.

PCC fue eliminado del árbol de código fuente de OpenBSD en 2012. [18] Su desarrollo se había estancado y ningún mantenedor había dado un paso adelante para desarrollarlo hasta convertirlo en algo que pudiera constituir una alternativa práctica a GNU Compiler Collection . [19] [20]

La última versión de pcc, es decir 1.1.0, se lanzó el 10 de diciembre de 2014. [21]

Véase también

Referencias

  1. ^ Johnson, SC (1978). "Un compilador portátil: teoría y práctica". Actas del 5º Simposio ACM SIGACT-SIGPLAN sobre principios de lenguajes de programación. Tucson, Arizona. : 97–104. doi : 10.1145/512760.512771 . S2CID  14390804.
  2. ^ 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 .
  3. ^ Johnson, SC (1981). Un recorrido por el compilador C portátil. Manual del programador de Unix, séptima edición, volumen 2. Holt, Rinehart y Winston. ISBN 0-03-061743-X.
  4. ^ ab Stroustrup, Bjarne (2002). Rivalidad entre hermanos: C y C++ (PDF) (Informe). AT&T Labs.
  5. ^ Ritchie, Dennis M. (1993). "El desarrollo del lenguaje C". Segunda conferencia ACM SIGPLAN sobre la historia de los lenguajes de programación. Cambridge, Massachusetts . pp. 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, ya existían muchos compiladores producidos de forma independiente.
  6. ^ ab "pcc history". pcc - compilador c portátil . 2010-06-21 . Consultado el 2012-06-26 .
  7. ^ Erdely, Mike (15 de septiembre de 2007). "Compilador PCC con licencia BSD importado". OpenBSD Journal . Consultado el 17 de diciembre de 2011 .
  8. ^ Moerbeek, Otto (15 de septiembre de 2007). "CVS: cvs.openbsd.org: src". openbsd-cvs (Lista de correo).
  9. ^ Brownlee, David (20 de septiembre de 2007). "Confirmación CVS: src/dist/pcc". source-changes (Lista de correo).
  10. ^ "¿El compilador GCC finalmente fue reemplazado por PCC?". /. 2007-09-17.
  11. ^ Larabel, Michael (12 de mayo de 2012). «FreeBSD 10 utilizará el compilador Clang y dejará de usar GCC». Phoronix . Archivado desde el original el 10 de abril de 2015 . Consultado el 23 de abril de 2015 .
  12. ^ Brooks, Davis (5 de noviembre de 2012). "ATENCIÓN: Clang ahora es el sistema predeterminado en x86" (Lista de correo) . Consultado el 23 de abril de 2015 .
  13. ^ Joerg, Sonnenberger (17 de octubre de 2013). "Importación de LLVM/Clang" (Lista de correo) . Consultado el 23 de abril de 2015 .
  14. ^ Matzan, Jem (15 de octubre de 2007). "Más sobre el nuevo compilador de OpenBSD". El informe de Jem . Archivado desde el original el 4 de enero de 2012. Consultado el 17 de diciembre de 2011. Pero eso nunca ha sido realmente la agenda, ¿ven ? Algunas personas piensan que odiamos el código GNU. Pero el problema es que odiamos el código grande y el código con errores que el desarrollador 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.
  15. ^ de Weerd, Paul (29 de diciembre de 2009). "Llamado a pruebas: pcc y el núcleo de OpenBSD". OpenBSD Journal . Consultado el 17 de diciembre de 2011 .
  16. ^ Magnusson, Anders (1 de abril de 2011). «Versión 1.0». Compilador C portátil . Consultado el 17 de diciembre de 2011 .
  17. ^ "BSD Fund: pcc fund". bsdfund.org . 2011-04-01. Archivado desde el original el 2009-01-05 . Consultado el 2012-06-26 .
  18. ^ Paul Irofti (12 de abril de 2012). "CVS: cvs.openbsd.org: src".
  19. ^ Peter Hessler (18 de junio de 2012). "Re: ¿Cuál es la historia detrás de la destitución del PCC?".
  20. ^ Miod Vallat (31 de julio de 2013). "Compiladores en OpenBSD".
  21. ^ Magnusson, Anders (10 de diciembre de 2014). «Versión 1.1.0». Compilador C portátil . Consultado el 22 de abril de 2022 .

Enlaces externos