Compiladores: LLVM 2.8
O LLVM, que desde 2003 vem se estruturando para oferecer uma moderna infra-estrutura de compilação otimizada e implementada em software livre (sob a licença NCSA), anunciou o lançamento de sua versão 2.8.
O LLVM 2.8 inclui diversas melhorias em seus principais componentes, em especial quanto ao suporte ao C++ no Clang (descrito como completo quanto aos recursos e bastante usável). Embora não estejam presentes na versão 2.8, 2 novos subprojetos também foram agregados para completar a infraestrutura de desenvolvimento baseada no LLVM: libc++ e LLDB. (via lwn.net)
O LLVM é maligno porque é abençado pela empresa do Sr. Empregos. Sejamos livres e vamos usar somente o GCC 2.96 do projeto GNU.
O Clang é muito bom, estou com ele aqui no Arch(e com o gcc que é mais usado), no entanto, ainda não vi motivos reais para largar o gcc. De qualquer modo é uma alternativa válida e eficiente.
Que eu saiba, não existiu uma versão 2.96 do GCC, pois da 2.95, passou direto para a série 3.x.
Para os novatos Linuxeiros:
http://gcc.gnu.org/gcc-2.96.html
http://www.redhat.com/advice/speaks_gcc.html
zar0c00l é melhor que vocês e sabe mais.
@zer0cool
Você não é e nunca vai ser o que o zerocool era no filme e somente idiotas falam de si mesmo na terceira pessoa.
Assim diz J-Fonz!
“zer0c00l”, vamos aos pontos:
1) O LLVM tem uma licença muito menos restritiva que o GCC;
2) O LLVM, ao contrário do GCC, foi estruturado baseando-se em decisões técnicas e não políticas;
3) O LLVM é extremamente modular e reutilizável, não sendo controlado por uma instituição burocrática com decisões baseadas em um pensamento restrito e engessado;
4) O LLVM foi desenhado de forma que possa ser usado tanto para compilação propriamente dita como um “canivete suíco” para pesquisadores que trabalham na área de compiladores, linguagens, algoritmos de otimização, e outras áreas diversas.
Pergunto: quem é maligno, aquele que limita o avanço científico baseado numa ideologia de pensamento fundamentalista, ou quem contribui com algo que todos possam realmente usar e aproveitar (inclusive comercialmente)?
E é isso.
Acredito que temos que pensa em todos os pontos antes de usar um compilador ou o outro.
O LLVM pode ter lá sua vantagens técnicas,no entanto não quer concorrer com o GCC.
O GCC é um software livre que não apoia o proprietário, tem muitas coisas boas nele também.
Acho que só isso que se deve ter : ponderação.
Senhores,no alimente os trolls.
@Leonardo L., diz aí para gente que diferença faz se um compilador é implementado sob GPL ou não? Desde que as bibliotecas sejam livres para linkar e estejam sob LGPL (como é hoje no GCC), isso permitiria que se faça software fechado, se for o desejo do utilizador. Diz para gente no que o cara ficaria limitado se a licença do LLVM fosse GPL v3, no que isso nos afetaria? Diz para gente que decisão técnica e melhoria seria perdida por optar por um ou outro licenciamento?
Explica para gente se, p. ex., a Apple aparecer daqui a dez anos com uns registros de patentes na mão e disser que por tudo que vc fez no compilador LLVM terá que pagar X para ela, o que vc faz? Quem vai estar limitado numa situação dessas?
Veja o exemplo recente da Microsoft. Está lá a Motorola fornecendo seus celulares com Android, chega a MS e diz: olha vc pode sincronizar e-mail e dados de calendário, agendamento de reuniões, etc. em qq lugar, mas fazer isso num telefone é coberto pela nossa patente no. xyz. Outra mais específica: lá está vc desenvolvendo em Java no Android e vem lá a Oracle e diz que vc não pode usar JIT pois ela têm uma patente sobre isso, vc faz o que? (pelo que sei a LLVM têm funcionalidade JIT, tb, não é? e aí?).
Eu costumava não usar o LLVM porque achava que o único motivo do projeto existir era que o GCC pe licenciado através da GPLv3, mas depois que eu vi os slides de uma apresentação sobre o LLVM, mudei de ideia.
O LLVM realmente tem algumas ideias bem interessantes. Fazer um compilador é o segundo objetivo do projeto, não o objetivo primário. O objetivo primário é fazer um conjunto de componentes reutilizáveis que ajudem em várias tarefas relacionadas a linguagens de compilação, tais como criar um compilador, um analisador de código, um depurador, uma máquina virtual, … .
Creio que integrar uma IDE com o LLVM pode gerar resultador mais interessantes (e mais rápidos, como mostram vários benchmarks por aí) do que com o GCC. Já comecei a testá-lo (junto com o clang) por aqui e as mensagens de erro são muito mais descritivas do que com o GCC.
desculpem, mas não posso deixar o troll morrer de fome…
Leonardo L. (usuário não registrado) em 6/10/2010 às 6:42 pm:
“1) O LLVM tem uma licença muito menos restritiva que o GCC;”
mentira: software proprietário pode integrar o llvm, melhorá-lo e vender como solução proprietária sem nunca dar nada em troca ao projeto original. Pode se tornar tão melhor que o original de modo a tirar dele o brilho, respeito e usuários, efetivamente tornando-o irrelevante. Isso sim é restritivo para software livre e um tremendo retrocesso remetendo ao modelo de software dos anos 80 e 90.
Que tal modelo seja hoje novamente defendido e apoiado sob a justificativa hipócrita de ser “menos restritivo” ou “mais livre” é uma tremenda ironia! Tem muita raposa velha se valendo dessa argumentação tosca…
“2) O LLVM, ao contrário do GCC, foi estruturado baseando-se em decisões técnicas e não políticas;”
certo, e a mão da Apple e de seu dono control freak nada tem a ver com isso… afinal, ele tem mais com o que se preocupar, como não permitir VMs ou interpretadores em seu hardware…
“3) O LLVM é extremamente modular e reutilizável, não sendo controlado por uma instituição burocrática com decisões baseadas em um pensamento restrito e engessado;”
é controlado por uma empresa com marketing ágil e com look moderno.
“4) O LLVM foi desenhado de forma que possa ser usado tanto para compilação propriamente dita como um “canivete suíco” para pesquisadores que trabalham na área de compiladores, linguagens, algoritmos de otimização, e outras áreas diversas.”
O LLVM tem muitos bons usos, à despeito de sua licença mais restritiva para software livre e dos interesses políticos por trás.
Mas o que não posso perdoar são energúmenos escrevendo “desenhado” ao invés de “projetado” ou “embarcado” ao invés de “embutido”…
“Pergunto: quem é maligno, aquele que limita o avanço científico baseado numa ideologia de pensamento fundamentalista, ou quem contribui com algo que todos possam realmente usar e aproveitar (inclusive comercialmente)?”
aquele que distorce a verdade e luta em prol de seus próprios interesses excusos, ao invés de pela verdadeira liberdade para todos…
danilo, vejo 2 motivos: compila mais rápido, e tem mensagens de erro melhores.
ele nao tem todos os recursos do gcc [relevante aqui é o gcc fazer mais otimizações, e suportar mais arquiteturas]. mas já o substituiu pra meus proprios programas.
alguns projetos, como o linux, tem como politica aceitar usar extensões do gcc. isso pq nao veem motivo pra mudar de compilador.
Gosto de concorrência. Um compilador alternativo para Linux á altura do gcc é muito bom (ok, ambos gcc e llvm são multiplataforma, mas vcs entenderam).
O pessoal tem feito um bom trabalho e em breve o llvm (e tudo em volta dele) provavelmente será usado por padrão em alguma grande distribuição Linux. Aí a gente vai poder ver na prática se faz alguma diferença para o usuário.
Ah sim, pelo que estive lendo, o llvm é mais organizado e tem uma api melhor, sendo mais fácil escrever um front-end para uma nova linguagem ou um back-end para uma nova plataforma com ele do que com o gcc. Alguém confirma?
E eu reclamando do pessoal que briga por causa de futebol. Discutir por causa de Compiladores??? 2012 tá ai mesmo.
discutir por ferramentas é menos inútil do que discutir por causa de um bando de atletas bem pagos correndo atrás de uma bola…
Para quem não sabe ou não viu (afinal, o “bom editor” do br-linux não relatou):
O LLVM é patenteado pela Apple!!!!
http://en.swpat.org/wiki/Apple_Inc.#Patenting_LLVM.3F
É mais uma daquelas armadilhas/ciladas que o RMS tanto evangeliza para evitarmos e que o Bino corre de medo :-D
O Rodolfo está quase correto: embora a Apple não tenha patenteado o LLVM em si (nem consigo imaginar o que seria isso), ela possui uma patente que abrange o comportamento do LLVM quanto ao tratamento de Javascript, e outra que trata de implementações de memória virtual portável entre arquiteturas diferentes.
Mas lá mesmo na referência apontada consta a menção à política de contribuições ao LLVM, em que quem contribui código também precisa oferecer a licença de livre uso das patentes que o cobrirem.
Se alguém tiver qualquer evidência de que a Apple não disponibilizou essas licenças, pode avisar ao swpat.org, e estará prestando um serviço relevante quanto ao risco que as patentes de software representam.
Tomando como base toda a “trollagem” de patentes de software que o mundo tem visto nos últimos meses, cabe aos caras do LLVM mostrar que estas e todas as outras patentes mencionando o projeto estão mesmo sobre a gestão irrestrita do projeto – anulando futuras restrições ou processos.
Até lá, fico com a pulga atrás da orelha e, sempre que perguntarem, digo LLVM: its can be a trap!
Rodolfo, seria interessante mesmo. A vida com patentes de software seria muito mais simples se os desenvolvedores de qualquer projeto pudessem mostrar que todas as patentes aplicáveis a ele estão sob seu controle, ou de outra forma não oferecem ameaça aos seus usuários.
Infelizmente não funciona assim, e eles se vêem forçados a tentar resolver isso via requisitos dos acordos de contribuição (caso do LLVM) ou via licenças de copyright (caso do GCC). Às vezes as empresas detentoras de algumas patentes conhecidas se comprometem publicamente a não usá-las contra o projeto, ou mesmo concedem formalmente uma licença, mas infelizmente isso é raro e, quando acontece, nem sempre é abrangente o suficiente para tranquilizar definitivamente a todos.
Tecnologias na qual há muita pesquisa recente sofrem com isso especialmente, e é o caso dos compiladores, assim como o dos codecs, de serviços de rede de alto desempenho e muitos outros. O grande risco nem são as patentes conhecidas e por parte de contribuidores do projeto (como a Apple no LLVM ou a Red Hat no GCC), mas sim as patentes ainda não identificadas, e registradas em nome de alguém que nunca contribuiu com o projeto em questão e portanto não está sujeito aos seus acordos de licenciamento.
No caso do GCC, por exemplo, dá pra ter razoável expectativa de que as patentes que estão em nome da Red Hat (para não falar das que desconhecemos) não serão usadas contra o projeto mas – por exemplo, se a empresa for adquirida por um gênio do mal – o que restará para proteger os usuários é a licença de copyright que menciona explicitamente a necessidade de contribuir as patentes. E se alguma patente estiver em nome de uma empresa que não contribuiu para o projeto, nem mesmo a licença de copyright irá se interpor.
No caso do LLVM a grande diferença é que a Apple não conta com nossa confiança implícita de que não irá se voltar contra os projetos aos quais contribuiu. Mas se ela resolver fazê-lo, o que está no caminho dela é justamente esse acordo ao qual precisa aderir para poder contribuir com o compilador.
De uma forma ou de outra, ter a pulga atrás da orelha quanto a compiladores, codecs e outras tecnologias que sabidamente são recheadas de patentes me parece saudável e, se você acredita que o risco com o LLVM é maior do que com algum outro compilador que você prefira, creio que faz bem em não usá-lo.
Quanto mais estudo o LLVM, mais vejo o tanto que o GCC é restritivo, amarrado, burocrático e bagunçado.
Impressionante como o software evolui melhor quando não é pautado por brigas políticas, mas técnicas.
marcosalesman da microsoft sempre de brinks…
Marcosalex
Acho que exagera demais. Gcc sempre está trabalhando pelas inovações.
E denovo não fale essas coisas .Tudo tem uma política e tudo tem uma técnica.Se quer ser um robo da sociedade ,tudo bem ,se agarre ao LLVM,mas se quer um desenvolvimento justo e sustentável, então fique com o gcc.
LLVM também tem uma política ,assim como todas elas.
Marcosalex
É fogo né !
Mas o seguinte ,você mistura muitas coisas. O LLVM tem mais capital porque ajuda grandes empresas de software proprietário.O gcc não apoia isso pois ele não quer dar espaço para software proprietário e por isso não usa licenças permissivas .
A dita “bagunçada” que você fala do gcc possibilita o uso de extensões caso não fique satisfeito com o gcc somente. Essa falsidade de que o GCC não possibilita fazer certas coisas não é verdade .O problema é que as empresas de software proprietário querem usar e abusar do gcc. E a FSF não permite isso.
Se quer algo mais , use o sistema de extensões e para de falar mal do gcc. Inclusive não misture coisas como “pólitica” ,pois tudo tem uma política e técnica.
A libjit plus também não concorda com a política da LLVM e fizeram benchmarks demonstrando que a Libjit é mais leve e alguns casos mais rápida que a LLVM. E olha só é LGPL!
Existem projetos interessantes como o Milepost gcc.
@Xinuo,
Se alguma empresa X decidir entrar com um processo contra a FSF por uma patente do software Y, infringida pelo GCC, o que fazer? Ou você acha que não pode acontecer, que ninguém pode ter pensado antes em algum algoritmo Z para otimização de árvores SSA com W e V características?
Se formos entrar na discussão das patentes, ninguém nem nenhum software está livre e/ou isento de sofrer qualquer tipo de ação deste tipo.
Além disso, não é com uma licença de software que você vai resolver este problema, apenas com ações mais diretas – como por exemplo, pressionando parlamentares a proporem alterações nas leis de patentes. Não só isso é possível como extremamente necessário, já que o atual sistema de patentes de software é uma piada.
@foobob,
Sobre o primeiro item, talvez você não tenha percebido que boa parte do que você disse é uma questão de ponto de vista. Não se pode negar o óbvio: uma licença que possui páginas e páginas de detalhamento e entrelinhas estabelecendo o quê e como você pode fazer, com certeza é muito mais restritiva que uma licença de apenas três cláusulas – que qualquer “energúmeno” pode entender. Veja que não estou falando em melhor ou pior, apenas em ser mais ou menos restritivo.
Também não falei em liberdade – você que falou. E se fosse para entrarmos neste ponto, teríamos que discutir liberdade coletiva x liberdade individual. Quer aprofundar a discussão, que você mesmo disse que é antiga? Só não esqueça que, por mais antiga que seja a discussão, nenhum dos argumentos possui prazo de validade.
Sobre o primeiro/quarto item: antes de entitular alguém de raposa velha ou de energúmeno (porque o seu dicionário e/ou vocabulário é “mais restritivo”, e não permite neologismos), ou até mesmo antes de usar esses adjetivos como algum tipo de argumento, sugiro que você coloque a mão na massa e veja por você mesmo.
Esse é um dos pontos que discordo veementemente da política da GNU, de tornar o compilador extremamente engessado e difícil de reaproveitar modularmente, só para que ninguém “substituísse alguma parte do compilador por um software proprietário”.
É como se uma fabricante de automóveis fundisse o bloco do motor, o chassis, o cabeçote, e etc, numa só peça – para que você nem ninguém tivesse com substituir por outro componente “não livre”. Ah sim, e se você quiser trocar alguma coisa (só o motor, por exemplo), melhor jogar o carro fora e começar do zero.
Isso não parece uma limitação técnica para você?
Ah sim, e sobre o segundo e terceiro itens (e porque não, sobre o quarto item também): desenvolva algo para o LLVM e depois tente fazer o mesmo para o GCC – aí, me diga como foi a sua experiência.
Leonardo
Leonardo
No entanto ,a FSF mantém uma política de não apoiar nenhum tipo de patente de software ,inclusive a GPLV3 deixa claro isso.
O LLVM usa uma licença que não dá nenhuma explicação sobre isso e inclusive a corporação que suporta o LLVM adora patentes e age como ela fosse dona da inovação.
Eu não apoio patentes de nenhum tipo ,inclusive de software.
@Leonardo L., de certo que os países que usam essas patentes estão ficando engessados. Boa oportunidade dos países que estão fora têm para crescer em cima deles. :)
Mas voltando ao assunto, temos no presente caso do LLVM, o risco de patente é “fogo amigo”, ou seja, um dos colaboradores do projeto está se munindo com patentes em cima de coisas que o projeto faz.
Na página que @Rodolfo Evil achou, não está confirmado se a Apple ofereceu as garantias que o responsável pelo projeto pediu.
Não seria muito mais tranquilo que o projeto adotasse alguma licença que oferecesse garantias sobre esse risco de fogo “amigo”? A GPL v3, LGPL v3, Apache 2, etc. têm essas garantias (veja mais no site da SWpat.org).
Vc não respondeu minha pergunta sobre que decisão técnica poderia ser afetada se a licença do projeto mudasse para GPL v3, por exemplo. Note que isso não implica que o projeto ser gerido para FSF.
@Xinuo,
Pelo que o Rodolfo Evil enviou acima, não me parece haver risco iminente para quem utiliza o LLVM. Além disso, o LLVM foi precedido por outros projetos que já faziam o mesmo e de forma semelhante, sendo muito fácil encontrar “prior art” para diversas técnicas lá patenteadas.
Não sei se uma licença como a GPLv3 pode garantir proteção contra patentes. Vamos supor que o software livre Z utiliza diversas patentes da empresa X, e que esta empresa resolva vender algumas das suas patentes para empresa Y. Depois de alguns anos, a empresa Y resolve ir atrás de quem está utilizando suas patentes, e abre uma ação contra os detentores de copyright do software Z. A licença não cobre este tipo de situação, nem a legislação vigente.
Dê uma olhada nesse mesmo site (SWPat) e veja só como estão classificadas estas cláusulas de patentes: http://en.swpat.org/wiki/Insufficient_and_failing_remedies
Sobre as suas perguntas, atente ao fato que não falei que a licença afetou as decisões técnicas, e sim que a FSF afetou as decisões técnicas para forçar as restrições implicadas pela licença. Na minha humilde opinião, se eles tivessem confiança nos termos de licenciamento que eles mesmo escreveram, isso seria totalmente desnecessário, e hoje teríamos uma infraestrutura de compilação muito melhor e que a comunidade poderia utilizar de uma forma muito mais eficaz.
E é isso.
Leonardo L
Mesmo assim é mais garantido trabalhar em um ecossistema saudável e que não apoie empresas que adoram patentes. E a GPL não é tudo,mas faz bem melhor que as licenças BSD que não dizem nada a respeito.
Entendo que existe muita arte no LLVM ,no entanto empresas insistem em patentear estes tipos de coisas .A Apple faz isso inclusive. O problema é que todo mundo tem medo de enfrentar devido ao poder financeiro. E mesmo ,assim existe sempre espaço para as grandes corporações batizarem suas ideias com patentes.
Acho que as pessoas tem que pensar um pouquinho.Se as pessoas querem que as patentes dee software acabem que então não apoiem corporações que se apoiam em corrupção e lobby para aprovar as leis que eles querem.
Acho que falou mal da FSF desnecessariamente
A FSF tem como objetivo defender a liberdade de software .Ela não quer ficar montando software para nada ou por achar legal. O objetivo é liberdade. Para FSF , O GCC é suficiente para atender as demandas de um software livre que roda em várias plataformas. Para ela está suficiente pois o GCC é uma grande escolha para quem quer sair do mundo dos compiladores proprietários.
Sobre a FSF ser restrito no desenvolvimento do GCC é porque ela foca na liberdade .O GCC tem anos de uso e a FSF já passou por grandes problemas por causa do software proprietário. No entanto ,não acho isso grave ,pois é só algumas partes .E caso alguém esteja extremamente preocupado com isso ,que então faça um projeto derivado.
Conselhos do Bradley Kugn para evitar abusos de patentes
http://ebb.org/bkuhn/blog/2010/06/30/bilski.html
@self_liar,
Quem tem que fazer algo sobre as patentes são as pessoas, não o software. Empresas não escrevem nem modificam as leis, quem o faz são os deputados e senadores, por exemplo – ou seja, o poder legislativo.
Achar que uma licença faz diferença é como usar uma folha de papel pra se proteger de uma chuva de granizo. Talvez ajude com relação à primeira pedra – mas na segunda, já era.
Não “falei mal” da FSF, falei como enxergo a situação. O que me preocupa no GCC e no jeito como a FSF geriu o projeto é o desperdício de mão-de-obra escassa. O GCC é desenvolvido de forma que seja um trabalho monstruoso reusar o software, e por isso todo mundo acaba reinventando a roda quando precisa de um analisador estático de C, um “middle-end” de otimização, entre outros. Sem contar que encontrar alguém com conhecimento na área de compiladores é algo relativamente complicado.
Essa é a minha reclamação com a FSF: no intuito de “garantir a liberdade” de todos, acabou fazendo o software ser como uma pedra muito dura, quase impossível de ser lapidada.
Para o usuário final, isso normalmente não aparece, por isso que para a FSF isso acaba não impactando tanto quando o assunto é usar o compilador. O problema é quando o assunto passa a ser estender, reusar e desenvolver usando o GCC, coisas muito importantes para o próprio ecossistema do software livre.
O engraçado nessa história é que a FSF acabou se comportando quase como uma grande corporação, tentando “manter o controle” por vias altamente questionáveis, e acabou prejudicando a própria comunidade.
Enfim, só meus dois centavos. Ninguém é obrigado a concordar, mas os fatos estão aí – é só usar o bom e velho Google.
Leonardo
As pessoas estão confundindo flexibilidade de licenciamento com flexibilidade do código
Leonardo L
Certo ,entendo ,mas não podemos ver a LLVM como uma panaceia.
As pessoas poderiam se reunir e fazer um compilador diferente e ferramentas diferentes ,mas que então faça usando GPL.
A LLVM não quis isso e preferiu aceitar capital de fora .Para isso teve que apoiar o software proprietário e licenças BSD.
A LLVM é interessante ,mas não precisava ser BSD.
Vamos usar o goo
Independente da licença de cada um, o que prejevo acontecer é que à medida que o LLVM for melhorando, ganhando estabilidade e performance, o número de usuários do GCC tende a minguar, a não ser que os desenvolvedores revejam seu posicionamento e volte a evoluir.
Marcosalex
É isso você fala sem nenhum fundamento. Se as pessoas continuarem valorizando recursos e não valorizar desenvolvimento sustentável e liberdade ,então é possivel que isso aconteça. No entanto isso depende de como as pessoas ficam fazendo propaganda da LLVM e não ve que ajuda uma corporação tirana e que não valoriza a liberdade de software.
Espero que valorize a liberdade do software e não apoie direta/indiretamente software proprietário.
É infeliz o que acontece hoje .Corporações tentando acabar com o desenvolvimento livre ,mesmo já existindo alternativas. O open-source está se tornando corporatizado.