Você pode ver mais em " Configurando e usando o gccgo ":
gccgo, um compilador para a linguagem Go. O compilador gccgo é um novo frontend para o GCC.
Observe que gccgo não é o compilador gc
Conforme explicado em " Gccgo no GCC 4.7.1 " (julho de 2012)
A linguagem Go sempre foi definida por uma especificação, não por uma implementação. A equipe Go escreveu dois compiladores diferentes que implementam essa especificação: gc e gccgo.
- Gc é o compilador original e a ferramenta go o usa por padrão.
- Gccgo é uma implementação diferente com um foco diferente
Comparado ao gc, o gccgo é mais lento para compilar o código, mas oferece suporte a otimizações mais poderosas, portanto, um programa vinculado à CPU criado pelo gccgo geralmente será executado mais rápido.
Além disso:
- O compilador gc suporta apenas os processadores mais populares: x86 (32 bits e 64 bits) e ARM.
- O Gccgo, entretanto, suporta todos os processadores que o GCC suporta.
Nem todos esses processadores foram totalmente testados para gccgo, mas muitos foram, incluindo x86 (32 bits e 64 bits), SPARC, MIPS, PowerPC e até Alpha.
O Gccgo também foi testado em sistemas operacionais não compatíveis com o compilador gc, principalmente Solaris.
se você instalar o comando go de uma versão padrão Go, que já suporta gccgo através da -compiler
opção: go build -compiler gccgo myprog
.
Resumindo: gccgo: mais otimização, mais processadores .
No entanto, conforme comentado por OneOfOne ( fonte ), geralmente há uma dessincronização entre o go suportado pelo gccgo e a versão mais recente do go:
gccgo só suporta até a versão go v1.2 , então se você precisar de algo novo em 1.3 / 1.4 (dica) gccgo não pode ser usado. -
GCC release 4.9 conterá a versão Go 1.2 (não 1.3) do gccgo .
Os cronogramas de lançamento para os projetos GCC e Go não coincidem, o que significa que 1.3 estará disponível no ramo de desenvolvimento, mas que o próximo lançamento do GCC, 4.10, provavelmente terá a versão Go 1.4 do gccgo.
duas e duas mencionam nos comentários o slide da apresentação de Brad Fitzpatrick
gccgo gera um código muito bom
... mas carece de análise de escape: mata o desempenho com muitas pequenas alocações + lixo
... GC não é preciso. Ruim para 32 bits.
twotwotwo adiciona:
Outro slide menciona que a geração de código ARM não-gccgo é instável.
Supondo que seja uma opção interessante para o seu projeto, provavelmente compare os binários para o seu caso de uso na arquitetura de destino.
Conforme comentários de PeterSO , Go 1.5 agora (Q3 / Q4 2015) significa:
O compilador e o tempo de execução agora são escritos inteiramente em Go (com um pequeno montador).
C não está mais envolvido na implementação e, portanto, o compilador C que antes era necessário para construir a distribuição se foi .
O slide "Go in Go" menciona:
C se foi.
Observação lateral: o gccgo ainda está forte.
Berkant pergunta nos comentários se gccgo
é o que gc
foi inicializado.
Jörg W Mittag responde:
Não, gccgo
apareceu depois gc
.
gc
foi originalmente escrito em C. É baseado no compilador C de Ken Thompson do sistema operacional Plan9 , o sucessor do Unix, projetado pelas mesmas pessoas. gc
foi refeito iterativamente para ter mais e mais de si mesmo escrito em Go.
gccgo
foi iniciado por Ian Lance Taylor , um hacker do GCC não afiliado ao projeto Go.
Observe que o primeiro compilador Go totalmente auto-hospedado era, na verdade, uma implementação comercial proprietária de código fechado para Windows, cujo nome parece ter desaparecido de meu cérebro da mesma forma que desapareceu da Internet. Eles alegaram ter um compilador auto-hospedado escrito em Go, voltado para o Windows em uma época onde gccgo
ainda não existia e gc
era extremamente difícil de configurar no Windows. (Você basicamente tinha que configurar um ambiente Cygwin completo, corrigir o código-fonte e compilar a partir do código-fonte.) A empresa parece ter falido, entretanto, antes mesmo de conseguir comercializar o produto.
Hector Chu lançou uma versão do Go para Windows em novembro de 2009.
E a go-lang.cat-v.org/os-ports
página menciona o trabalho inicial de Joe / Joseph Poirier também. Em desta página :
Há alguma chance de que alguém por dentro possa solicitar que um dos caras ( Alex Brainman - Hector Chu - Joseph Poirier) envolvido na produção do porte do Windows possa fazer uma entrada no wiki detalhando seu ambiente de construção?
Adicione a isso (em Writing Web Apps in Go ) ! 光 京 (Wei Guangjing) .