[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