Tag Archives: gcc

Versão mais nova do gcc para windows

Boas novas

Quem usa a versão oficial para windows do gcc, sabe que a versão oficial suportada pelo windows do gcc e um pouco antiga…. Mais precisamente a versão 3.4. Tá, admito, é muito antiga…. E essa versão não suporta as melhores qualidades do gcc mais novo.
Bom, para aqueles que gostam de novidades e muito poucos riscos, estou avisando aqui que agora vocês pode ter o melhor compilador do mundo em seu computador com o sistema Windows.

Onde baixar

Através desse site http://www.tdragon.net/recentgcc/ você pode baixar a versão mais nova do gcc para o windows!

Que fique claro: Eu só testei via emulação(wine), portanto não vi os detalhes do compilador, só do instalador e de como desinstalar. Mais, segundo o que promete o site que você pode baixar o compilador, ele tem suporte a todas as funcionalidades legais do gcc mais novo. Entre elas:

  • Suporte a arquitetura core2.
  • Suporte a openmp.
  • Suporte a pthreads.

Só esses 3 itens já são suficientes para convencer a qualquer pessoa a pelo menos testar.

Recomendo também a leitura do site, lá ele pode explicar qualquer duvida que venha a existir. Inclusive sobre alguns bugs corrigidos e informações sobre o compilador.

Minhas Impressões

Apesar de não ter usado o compilador, eu baixei e instalei ele só para ter uma noção de como era o instalador  e sua praticidade.

Bom, posso dizer que fiquei impressionado ;). O instalador é melhor do que o do MinGW (o instalador que instala o gcc-3.4 no windows) e ainda é compatível com esse(O instalador é compatível).

Através do instalador você pode remover, alterar e instalar a versão mais nova do gcc no seu computador. Ainda existe a possibilidade de continuar um instalação passada, aproveitando os downloads dos pacotes do site que você já baixou.

Vale a pena mencionar que na instalação ele baixa os pacotes e instala na sua maquina. Ou seja, você tem que estar com acesso a intenet ou fingir uma continuação de instalação se você já tiver os pacotes baixados. O que falta eu acho que é uma versão alternativa completa, com os pacotes já no instalador para não precisar baixar do site os arquivos. Mas talvez já tenha, porque eu não procurei muito, então pode ser que exista e eu não sei ;).

Os detalhes

Vamos aos detalhes do projeto. Esse projeto tem duas versões do compilador, claro que na maioria da vezes você só ira usar uma, mais é sempre bom ter a outra opção. Essas opções são classificadas de acordo de como o binário ira resolver as excessões. Vou mostrar as duas opções abaixo, mais na maior parte das vezes a opção padrão e a melhor e você não deve se preocupar com essa parte.

Calma. Uma pausa antes de prosseguirmos. Se prepare, a partir de agora o nível vai descer. A leitura a partir de agora eu admito que é um pouco mais pesada, mas não se assuste!

Então vamos falar agora sobre como resolver pilhas! Let’s Go Talk About Stacks ;).

SJLJ

A primeira, que é a versão padrão do projeto, é a versão compilada SJLJ.

Desse trecho em diante é especulação, porque não sei direito o porque de usar SJLJ, mas posso especular de forma muito próxima da realidade.

A vantagem de usar a versão padrão com SJLJ é que em vez de usar outro metodo de resolução de exceções, o desenvolvedor desta versão do gcc usa as instruções setjmp(man setjmp) e a longjmp(man longjmp).

Sacou o porque do SJLJ? ;).

Usar essas funções em um binário é mais rápido para o binário a não ser que você use muitas excessões. Se você usar muitas excessões você ira ter um overhead nos try{…}. Isso é a excessão em códigos de computação científica e em geral, por isso, use a versão padrão SJLJ.

Detalhe, não há os try{..} que eu mencionei acima. Para quem programa em c++ é mais fácil dizer assim para que você possa entender, mais imagine que esses blocos são códigos em C que estão ai no começo e no final de uma porção de código para simular os blocos try{…}.

Ah sim, também é mais portável desenvolver algo em SJLJ, porque as funções setjmp e longjmp são funções da biblioteca padrão. E desconfio que seja mais fácil escrever código com SJLJ, apesar de nunca ter escrito com essas funções, eu consigo imaginar como implementar com elas as excessões, consigo ate imagina uma troca de contexto de hardware. Deve ser resultado da minha “forma de pensar em pilhas”.

DWARF-2

A segunda versão do compilador é a a versão não padrão compilada com DWARF-2(dw-2).

Também não sei muito sobre dw-2. Para falar a verdade, sei mais de SJLJ e quase nada de dw-2, e logo vou explicar o porque. Então como acima, o trecho a seguir é mais especulação ainda ;).

Vamos a vantagens do dw-2. Primeiro, não a overhead para as excessões. Ponto. Como ele faz isso? Ai entra a parte estranha do processo e o porque eu não sei quase nada do processo.

Primeiro devemos lembrar de uma vantagem do SJLJ: “portabilidade”. Porque isso é importante? Porque no dw-2 não tem nenhuma. A cada plataforma existe uma forma do compilador fazer o binário resolver a excessão de forma diferente sem overhead para cada maquina. Isso é muito complexo de se implementar pelo que eu posso ver. Envolve sinal em algumas plataformas, pilhas e frames em outras e qualquer outro método em outras plataformas. Isso é o que quer dizer não portável. Pode ser de qualquer forma que resolva o problema em outra plataforma ;).

Além disso, o código fica muito complexo e maior. Há formas de diminuir essa complexidade, mas ela ainda existe.

Fim

Bom, é isso. Baixem o gcc-4,3 para windows! Se eu usasse windows não perderia tempo ;).

Acho que eu acabei me alongando mais na parte de resolução de pilha no binário gerado, mas acho que foi empolgação. Fazia tempos que eu queria escrever algo assim, então acho que falar só do gcc para windows que eu nem uso seria um pouco down. E sempre desejei dar uma esclarecida sobre esse assunto. Bom, fica ai para a geração futura ;).

PS1:. Meu corretor ortográfico esta com defeito no site. Perdão erros ortográficos. ;).

PS2:. Esse post pode ter opiniões pessoais e tendenciosas. Se encontrar alguma, ignore e veja a mensagem geral do texto.

Advertisements

Versão do gcc 4.5 lançada!

O gcc 4.5 foi lançado ontem depois de um período de desenvolvimento bem conturbado:p.

Com a versão nova do gcc, vem o suporte descontinuado e o aviso que nas próximas versões muitas arquiteturas iram deixar de ser suportadas e quais a partir da proxima versão também seram descontinuadas. Com a saida de algumas, outras entram, porque agora o gcc esta com suporte melhor as arquioteturas atom e arm.

Algo esperado também é o suporte parcial ao tão esperado c++0x. O gcc 4.5 tem suporte a maioria dos “features” do c++0x, com um suporte devendo apenas para a parte de concorrencia, mas esse suporte pode ser suprido por bibliotecas externas(como a boost) enquanto o padrão não é lançado de vez e o gcc não o suporta por completo.

Para quem quiser saber mais, pode ver na pagina de suporte ao c++0x do gcc 4.5, no propia pagina do gcc 4.5 ou no blog do phoronix.


%d bloggers like this: