[FUG-BR] Suporte Clang/LLVM

fbsdbr eksffa em freebsdbrasil.com.br
Sexta Outubro 16 13:38:39 BRT 2009


Gustavo Freitas escreveu:
> Li a reportagem sobre o Suporte Clang/LLVM na site FUG, gostaria de
> saber qual seria
> as vantagens/desvantagens em usar ao inves do GCC,
> será somente pelo simples fato de usar licença GPL. ?
> 

Por enquanto sao so desvantagens. O gcc e mais consolidado, trabalhado 
por mais tempo, testado amplamente em multiplas plataformas, tem mais 
bagagem, e uma comunidade propria de desenvolvedores.

A dupla clang/llvm consome tempo e recurso humano de desenvolvedores BSD 
que poderiam estar trabalhando nos seus respectivos sistemas, mas estao 
trabalhando na suite de compilacao. Isso eh desvio de atencao, 
formalmente. Quase tao prejudicial a produtividade quanto retrabalho, em 
uma organizacao.

Pra piorar, a necessidade de um novo compilador gera divergencia dentro 
da comunidade BSD. Enquanto alguns investem (tempo e dinheiro) no 
clang-llvm outros investem tempo e dinheiro[1] no pcc[2].

Existe uma comparacao de pros e contras do clang vs gcc e vs pcc:

http://clang.llvm.org/comparison.html

Enquanto os pros sao justos e verdadeiros, nao sao uma constante. 
Algumas das "otimizacoes alienigenas" do gcc que sao lixo, por exemplo, 
so acontece com -O3. Quase nada eh compilado com -O3.

Alem disso, a vantagem mais repetida, sobre velocidade de compilacao e 
binario pequeno, eu sou cetico.

Profiling recente no Darwin[3] mostra que apesar da velocidade e consumo 
mais "eficiente" de memoria, o produto final gerado em clang tem menos 
performance que o mesmo objeto de baixo nivel gerado pelo gcc.

Em miudos, de nada vale a velocidade de compilacao. O que importa eh o 
objeto compilado.

Lembro que foi um impacto quando saimos do FreeBSD 4 pro 5 e todos 
notaram "nossa o buildworld no 4 era 5x mais rapido, nossa o 5 ta super 
lento, nossa isso, nossa aquilo".

Gcc 2.95 pro gcc 3 foi um salto. Lembro o trampo que deu virar os ports, 
estabilizar o source, pra no final tudo demorar mais. E no Linux mesma 
coisa, todos fizeram quase-festa quando o Kernel 2.4.17 do LX la em 2002 
compilou sem problemas no gcc 4, e gerou resultados melhores que no gcc 
2.96. Mas todos reclamavam que demorava.

Dessa otica simplista devemos ficar mais felizes com o gcc no FreeBSD 4 
do que no FreeBSD 5, ou FreeBSD 7, por exemplo. Os Linuxers deveriam 
ficar mais felizes com o que era em 2002 do que hoje. Mas a coisa nao eh 
assim. O gcc passou a demorar mais depois do "chute" que levou da Intel 
(quando o icc esmagou o gcc em performance de objeto resultante). O gcc3 
  demorou mas comecou gerar resultados iguais ou melhores que o icc.

O side-effect foi o tempo de compilacao necessario pra tantas 
otimizacoes q ficou cada vez mais alto.

Ate hoje o icc pisa no calo do gcc[4].

Estamos vendo ai, recurso humano sendo recrutado pra testes[5], slots do 
Google SoC ocupados[6] com desenvolvimento o clang, Apple tuxando 
dinheiro e RH.

Mas por enquanto estamos so correndo atras do prejuizo. Culpa do louco 
(ok eu deveria preguejar mais contra o cara, talvez como dieguito 
maradonna pregueja contra a impresa eauahuahua) do RMS e sua GPL3. 
Acredito que teremos uma disputa competitiva entre um compilador BSD e 
um GPL logo, mas nao antes de gastarmos pelo menos mais 1 ano de 
recursos. Nao gosto de ver eh metade do tempo sendo gasto com PCC e 
outra metade com LLVM. Isso eh oneroso. Mas enfim...

Por isso penso que LLVM eh um mal necessario. Um dia espero que colhamos 
os "louros". A vantagem imediata que vejo eh se livrar dessa praga 
chamada GPL no code-base. Depois dizem que BSD eh isso e aquilo, mas eh 
na mao do louco-varrido-sujo-fedorento-arrogante-barbudo (RMS, nao o 
Lula) que o mundo Open Source fica refem. Nem o Torvalds vai por seu 
kernel em GPL3. Nem os maiores vendors que apoiam o Linux comercialmente 
vao financiar produto GPL3. E ainda falam mal dos perigos da licenca 
BSD... hipocrisia.

Bom, desculpem compartilhar meu longo ponto de vista, que nao eh de 
festa, mas de esperanca de podermos aproveitar a oportunidade. No 
momento so o que o mundo BSD tem eh problema e oportunidade. Alias nao 
eh essa a definicao basica de risco?

[1] http://www.thejemreport.com/content/view/369/
     http://pcc.ludd.ltu.se/
[2] http://bsdfund.org/projects/pcc/
[3] http://lists.apple.com/archives/objc-language/
[4] http://blog.alphagemini.org/2008/03/icc-vs-gcc-43.html
[5] http://www.fug.com.br/content/view/659/2/
[6] http://wiki.freebsd.org/BuildingFreeBSDWithClang


Mais detalhes sobre a lista de discussão freebsd