Visite também: Currículo ·  Efetividade BR-Mac

O que é LinuxDownload LinuxApostila LinuxEnviar notícia


DragonEgg (LLVM no GCC) também já consegue compilar a si próprio

Duas semanas depois da notícia de que o compilador livre Clang tornou-se capaz de compilar a si próprio efetivamente (um marco importante no histórico de qualquer compilador), chega a informação de que o DragonEgg também alcançou o mesmo feito.

Ambos (DragonEgg e Clang) fazem parte do bojo do LLVM, uma infra-estrutura de compilação, desenvolvida em C++ e sob uma licença permissiva de software livre, projetada para otimização em tempo de compilação, linkedição e execução de programas em variadas linguagens (originalmente C e C++, mas já expandida para uma série de outras, tais como Objective C, Fortran, Ada, Haskell, bytecode Java, Python, Ruby, ActionScript).

Mas ao contrário do Clang, que é um compilador independente, o DragonEgg é uma forma de substituir a otimização e a geração de código do GCC pela do LLVM, por meio de um plugin.

Trata-se de um projeto em andamento que ainda tem muitos marcos e barreiras a ultrapassar antes de ser usado em produção, mas a notícia de que ele já é capaz de compilar a si próprio completamente certamente é um idicativo do seu progresso.

E, no caso de uma infra-estrutura híbrida como é o caso (gcc + llvm + dragonegg), vale lembrar que o “compilar a si mesmo” neste caso significa usar o DragonEgg para compilar os 3 componentes (gcc, llvm e dragonegg), e aí usar os executáveis resultantes para compilar os 3 novamente, e chegar mais uma vez a executáveis corretos.


• Publicado por Augusto Campos em 2010-02-24

Comentários dos leitores

Os comentários são responsabilidade de seus autores, e não são analisados ou aprovados pelo BR-Linux. Leia os Termos de uso do BR-Linux.

    Muito boa noticia!

    Sérgio Berlotto (usuário não registrado) em 24/02/2010 às 9:45 am

    My God ! Que loucura isto … praticamente um loop infinito na compilação !
    Muito bom…

    Um brinde ao LLVM!

    Pedro (usuário não registrado) em 24/02/2010 às 1:21 pm

    Augusto, sem entrar no mérito das discussões acaloradas das últimas semanas, você poderia deixar explícito qual a licença utilizada pelo software, como, no caso, “licença permissiva de software livre, GPL, (…)”.

    Pedro, acho que o teu exemplo não fecha – a licença que mencionas não está na categoria de licenças permissivas de software livre, a não ser que adotes algum conceito diferente do empregado pela FSF na classificação de licenças.

    E sim, eu procuro deixar clara (ou ao menos indicar de forma específica) qual a licença de um projeto sempre que acho relevante. No caso de hoje, achei suficiente ao contexto mencionar que se tratava de uma licença permissiva de software livre, inclusive devido ao fenômeno que você mencionou, e que venho estudando com alguma atenção.

    Pedro (usuário não registrado) em 25/02/2010 às 3:21 am

    Augusto, posso estar enganado, mas a licença do DragonEgg é GPL v2, não? Minha suposição baseia-se neste link http://llvm.org/svn/llvm-project/dragonegg/trunk/COPYING . O que ocorreu, portanto, foi associar, no meu exemplo, a denominação por você dada, “licença permissiva”, com a que eu suponho que seja a do software em questão, conforme acima dito, não passando por maiores críticas sobre o que seria uma licença permissiva ou não. Quanto ao conceito da FSF, entendo a questão do copyleft como fator de restrição.

    Ademais, tendo em vista que o público do seu blog pessoal não é formado, em sua totalidade, por pessoas que estão a par do significado de software livre/código aberto (conforme acharem melhor) e de licensiamento de software (eu mesmo, p.e., quando conheci o linux, me utilizei de seu blog como referência, há mais de 8 anos), entendo melhor que as notícias com maior precisão poupariam o leitor de ir no site descobrir a licença utilizada (como eu fiz) ou ainda de se confundirem por não estarem cientes do assunto. Somente uma sugestão e um feedback.

    ps: estudando a questão de licenciamento? Aspectos jurídicos, em especial?

    Eu acho que a licença do plugin DragonEgg é mesmo a GPLv2, mas note que no texto eu estava me referindo ao licenciamento do LLVM, que é permissivo.

    Agradeço o feedback, mas neste caso me parece que o que você busca não é maior precisão, e sim maior detalhamento, para que você “não precise” ir buscar detalhes adicionais que lhe interessam em outras fontes. Este “precisar” é subjetivo – cada indivíduo pode ter curiosidades e interesses sobre aspectos específicos de vários atributos dos softwares mencionados em qualquer notícia, como foi o seu caso de querer saber a licença de um software, à qual eu nem mesmo me referi. Para mim, incitar esta curiosidade via meu blog é desejável, e é um subproduto que não me canso de tentar estimular.

    Finalmente, a questão que estou estudando não é a do licenciamento, mas sim a do surgimento de reações inflamadas por parte do público quando determinados atributos do licenciamento são mencionados.

    Pedro (usuário não registrado) em 25/02/2010 às 12:02 pm

    Lendo o texto novamente percebo que a licença permissiva refere-se mesmo ao LLVM.

    No tocante às reações inflamadas de outrora, aqui ocorridas, quando descreve a BSD como “verdadeiramente livre”, soa mal para alguns e é fácil entender o porquê. Levando-se em conta a acepção de liberdade como o direito do programador em fazer o que bem entender com o código (inexistência de copyleft, p.e.), concordo com você sobre o adjetivo. Agora, eu entendo a “liberdade verdadeira” sob ótica do software, ou seja, de que ele, pelas claúsulas de copyleft, será sempre mantido sob uma licença livre de software. Para mim, utilizar “licença permissiva” está perfeita para acabar com as discussões.

    Por fim, esta discussão, no final das contas, revela-se infrutífera, para mim. O que importa é que, cada software, ao escolher seu licenciamento, o fará pelas vantagens que obterá e não por aspectos ideológicos. Pragmatismo.

    ps: perguntei dos estudos pois minha tese de laureamento será sobre software livre.

    Pedro, desejo sucesso com a tese!

Este post é antigo (2010-02-24) e foi arquivado. O envio de novos comentários a este post já expirou.