Compilador: FreeBSD 10 vai substituir o GCC pelo Clang
Dando sequência a um esforço iniciado em 2009, os desenvolvedores do FreeBSD anunciam a intenção de substituir o GCC pelo também software livre Clang, que passará a ser o compilador default do sistema. O Clang 3.0 já está disponível (mas não configurado como default) no FreeBSD 9.0-STABLE e no 10.0-CURRENT, e a política no momento já é tratar como bug qualquer pacote que não possa ser compilado corretamente com ele. (via phoronix.com – “[Phoronix] FreeBSD 10 To Use Clang Compiler, Deprecate GCC”)
• Publicado por Augusto Campos em
2012-05-14
Qual o motivo da substituição o GCC está defasado?
O gcc não está defasado. Na realidade, o gcc tem produzido em média código executável mais rápido que o Clang até agora, embora cada um tenha suas vantagens/desvantagens.
O que pega para o gcc, na visão do pessoal dos BSDs, é a licença GPL (acho que é GPLv3), que impede forks proprietários do compilador (não tem nada a ver com o software compilado por ele, que pode ser proprietário sem problema).
Na realidade não são forks proprietários, mas sim a possibilidade de usar módulos do GCC em ferramentas proprietárias como IDEs, ferramentas de otimização, parsers, etc.
Por exemplo, para um editor de texto “entender” a sintaxe de uma linguagem poderia utilizar o front-end do GCC. Mas como a licença não permite é preciso reimplementar a funcionalidade.
clang tem alguma coisa haver com o llvm?
Tem sim, ele é um frontend for llvm para linguagens da familia C.
http://clang.llvm.org/
@linuxer
O FreeBSD não usa o GCC com a licenca GPLv3.
Eles pararam na GCC 4.2.2 que é a ultima versão com a GPLv2, e foram patcheando esta implementação de compilador. E o motivo continua sendo este mesmo que alguns colegas acima citaram: O Caráter “viral” da GPL, faz com que o clang seja o compilador de escolha(claro, e porque a Apple patrocina o LLVM também…)
Quem quiser saber mais sobre LLVM:
http://www.youtube.com/watch?v=XwUoCDARU1M
Pelo que vi o llvm tem uma série de conceitos novos em relação ao gcc. Que podem melhorar e muito o desempenho de uma aplicação.
@Igor Cavalcante, o llvm é melhor estruturado que o gcc, além de suas partes serem muito melhor reaproveitáveis em outras ferramentas, como citadas @Marcelo, acima.
O LLVM é o software nº 1 quando se pensa em criar uma nova linguagem de programação ou suportar uma linguagem existente numa nova arquitetura. Fazer o gcc gerar código para uma nova arquitetura é um saco de complicado. Já no LLVM o processo é facilitado pela própria arquitetura (de software) do sistema.
O LLVM não é um compilador. Ele é um framework que serve pra vc escrever compiladores, interpretadores, analizadores estáticos, enfim… é um canivete suíço do mundo das linguagens de programação.
O próprio desenvolvimento do LLVM está ajudando muito o GCC a melhorar. Isso é o poder da concorrência. O suporte ao C++0x em ambos g++ e clang tem andado lado a lado e o gcc por exemplo até está melhorando suas mensagens de erro (testei numa compilação recente da futura versão 4.8), indicando por exemplo em que ponto exato ocorreu, o que é um avanço em relação às versões anteriores.
Pra quem gosta de linguagens tradicionais como c e c++ (principais usos do gcc e do clang) a batalha entre gcc e clang/llvm é só alegria, pois uma – impossível – união de esforços entre as duas iniciativas só fariam os esforços estagnarem.
Torço o nariz para a competição entre as centenas de distros Linux, mas sou a favor quando se fala de projetos bem estabelecidos tais como compiladores, navegadores web, etc.