Puede ver más en " Configuración y uso de gccgo ":
gccgo, un compilador para el lenguaje Go. El compilador gccgo es una nueva interfaz para GCC.
Tenga en cuenta que gccgo no es el compilador de gc
Como se explica en " Gccgo en GCC 4.7.1 " (julio de 2012)
El lenguaje Go siempre se ha definido mediante una especificación, no una implementación. El equipo de Go ha escrito dos compiladores diferentes que implementan esa especificación: gc y gccgo.
- Gc es el compilador original y la herramienta go lo usa por defecto.
- Gccgo es una implementación diferente con un enfoque diferente
En comparación con gc, gccgo es más lento para compilar código pero admite optimizaciones más potentes, por lo que un programa vinculado a la CPU creado por gccgo generalmente se ejecutará más rápido.
También:
- El compilador gc solo admite los procesadores más populares: x86 (32 bits y 64 bits) y ARM.
- Gccgo, sin embargo, admite todos los procesadores que admite GCC.
No todos esos procesadores se han probado a fondo para gccgo, pero muchos sí, incluidos x86 (32 bits y 64 bits), SPARC, MIPS, PowerPC e incluso Alpha.
Gccgo también se ha probado en sistemas operativos que no son compatibles con el compilador gc, especialmente Solaris.
si instala el comando go de una versión estándar de Go, que ya soporta gccgo a través de la -compiler
opción: go build -compiler gccgo myprog
.
En resumen: gccgo: más optimización, más procesadores .
Sin embargo, como se ha comentado por OneOfOne ( fuente ), a menudo hay una desincronización entre ir apoyada por gccgo, y la última versión Go:
gccgo solo admite hasta la versión go v1.2 , por lo que si necesita algo nuevo en 1.3 / 1.4 (sugerencia), gccgo no se puede utilizar. -
La versión 4.9 de GCC contendrá la versión Go 1.2 (no 1.3) de gccgo .
Los cronogramas de lanzamiento para los proyectos GCC y Go no coinciden, lo que significa que 1.3 estará disponible en la rama de desarrollo, pero que el próximo lanzamiento de GCC, 4.10, probablemente tendrá la versión Go 1.4 de gccgo.
twotwotwo menciona en los comentarios la diapositiva de la presentación de Brad Fitzpatrick
gccgo genera muy buen código
... pero carece de análisis de escape: mata el rendimiento con muchas asignaciones pequeñas + basura
... GC no es precisa. Malo para 32 bits.
twotwotwo agrega:
Otra diapositiva menciona que la generación de código ARM que no es de gccgo es inestable.
Suponiendo que sea una opción interesante para su proyecto, probablemente compare los binarios para su caso de uso en su arquitectura de destino.
Como comenta peterSO , Go 1.5 ahora (Q3 / Q4 2015) significa:
El compilador y el tiempo de ejecución ahora están escritos completamente en Go (con un pequeño ensamblador).
C ya no participa en la implementación, por lo que el compilador de C que alguna vez fue necesario para construir la distribución se ha ido .
La diapositiva "Ir en Ir" menciona:
C se ha ido.
Nota al margen: gccgo sigue siendo fuerte.
Berkant pregunta en los comentarios si gccgo
es de lo que gc
se arrancó.
Jörg W Mittag responde:
No, gccgo
apareció después gc
.
gc
fue escrito originalmente en C. Se basa en el compilador C de Ken Thompson del sistema operativo Plan9 , el sucesor de Unix, diseñado por las mismas personas.gc
fue refactorizado iterativamente para tener más y más de sí mismo escrito en Go.
gccgo
fue iniciado por Ian Lance Taylor , un hacker de GCC no afiliado al proyecto Go.
Tenga en cuenta que el primer compilador de Go totalmente autohospedado era en realidad una implementación comercial de código cerrado patentado para Windows cuyo nombre parece haber desaparecido de mi cerebro de la misma manera que lo hizo en Internet. Afirmaron tener un compilador autohospedado escrito en Go, dirigido a Windows en un momento en el gccgo
que aún no existía y gc
era extremadamente doloroso configurarlo en Windows. (Básicamente, tenía que configurar un entorno Cygwin completo, parchear el código fuente y compilar desde la fuente). Sin embargo, la compañía parece haberse plegado antes de que pudieran comercializar el producto.
Héctor Chu lanzó una versión de Go para Windows en noviembre de 2009.
Y la go-lang.cat-v.org/os-ports
página también menciona el trabajo inicial de Joe / Joseph Poirier . En esta pagina :
¿Alguna posibilidad de que alguien que conozca pueda solicitar que uno de los chicos ( Alex Brainman - Hector Chu - Joseph Poirier) involucrados en la producción del puerto de Windows pueda hacer una entrada wiki detallando su entorno de construcción?
¡Agregue a eso (en Escribir aplicaciones web en Go ) ! 光 京 (Wei Guangjing) .