O GCC 11.1 já foi lançado, essas são suas notícias e mudanças mais importantes

Após um ano de desenvolvimento, Lançada nova versão do pacote de compiladores GCC 11.1, o primeiro lançamento significativo no novo branch GCC 11.x. Sob o novo esquema de numeração de versão, a versão 11.0 foi usada durante o desenvolvimento e, pouco antes do lançamento do GCC 11.1, uma ramificação do GCC 12.0 já havia sido bifurcada para formar a próxima versão principal do GCC 12.1.

O GCC 11.1 se destaca pela transição para o formato de arquivo de depuração padrão DWARF 5, a inclusão padrão do padrão C ++ 17 ("-std = gnu ++ 17"), melhorias significativas na compatibilidade com o padrão C ++ 20, suporte experimental para C ++ 23, melhorias relacionadas ao padrão futuro de a linguagem C (C2x), novas otimizações de desempenho.

Novos recursos principais do GCC 11.1

O modo padrão para a linguagem C ++ foi alterado para usar o padrão C ++ 17, em vez do C ++ 14 proposto anteriormente. É possível desativar seletivamente o novo comportamento do C ++ 17 ao processar modelos que usam outros modelos como parâmetro (-fno-new-ttp-matching).

Adicionado suporte para aceleração de hardware da ferramenta AddressSanitizer, que permite determinar os fatos de acesso a áreas de memória liberadas, excedendo os limites do buffer alocado e alguns outros tipos de erros ao trabalhar com memória. A aceleração de hardware está atualmente disponível apenas para a arquitetura AArch64 e se concentra em seu uso ao compilar o kernel Linux.

Outra novidade que se apresenta são os otimizações e melhorias entre os procedimentos, conforme uma nova passagem IPA-modref foi adicionada (-fipa-modref) para rastrear efeitos colaterais em chamadas de função e melhorar a precisão da análise. Além de também um implementação aprimorada do passe IPA-ICF (-fipa-icf), que reduz o consumo de memória de compilação e aumenta o número de funções unificadas para as quais blocos de código idênticos são mesclados.

El motor de otimização orientado por perfil (PGO), modo "-fprofile-values" aprimorado mantendo o controle de mais parâmetros para chamadas indiretas.

também A implementação contínua do padrão OpenMP 5.0 é destacada (Open Multi-Processing), em que adicionado suporte inicial para diretiva de atribuição e a capacidade de usar loops não uniformes em compilações OpenMP. A variável de ambiente OMP_TARGET_OFFLOAD agora é suportada.

A implementação da especificação de programação paralela OpenACC 2.6 fornecida para as linguagens C, C ++ e Fortran, que define ferramentas para descarregar operações para GPUs e processadores especializados, como NVIDIA PTX, foi aprimorada.

Para as linguagens da família C, um novo atributo "no_stack_protector" foi implementado, projetado para marcar funções para as quais a proteção de pilha não deve ser habilitada ("-fstack-protector"). O atributo "malloc" foi estendido com suporte para identificar pares de chamadas para alocar e liberar memória, que é usado no analisador estático para detectar erros de memória típicos (vazamentos de memória, uso após a liberação, chamadas duplas para a função de liberação, etc.) e avisos do compilador "-Wmismatched-dealloc", "-Wmismatched- new-delete" e " -Wfree-nonheap-object "relatando operações de desalocação e desalocação inconsistentes.

Na geração de informações de depuração, utiliza-se por padrão o formato DWARF 5 que, em comparação com as versões anteriores, permite gerar dados de depuração 25% mais compactos. O suporte completo para DWARF 5 requer binutils pelo menos a versão 2.35.2.

Recursos aprimorados do modo ThreadSanitizer (-fsanitize = thread), já que sime adiciona suporte para tempos de execução e ambientes alternativos, bem como suporte para a ferramenta de depuração Kernel Concurrency Sanitizer (KCSAN) para detectar dinamicamente as condições de corrida no kernel do Linux. Novas opções "–param tsan-distinguish-volatile" e "–param tsan-instrument-func-entry-exit" foram adicionadas.

O vetorizador fornece a contabilidade de todo o conteúdo da função e o processamento adicional dos recursos associados às interseções e referências aos blocos anteriores no fluxograma de controle (CFG).

O otimizador tem a capacidade de converter uma série de operações condicionais em uma expressão de mudança, na qual a mesma variável é comparada. No futuro, a expressão de mudança pode ser codificada usando instruções de teste de bits (para controlar essa conversão, a opção "-fbit-tests" foi adicionada).

Para C ++, parte das mudanças e inovações propostas no padrão C ++ 20 foram implementadas, incluindo as funções virtuais "consteval virtual", pseudo-destruidores para encerrar o ciclo de vida de objetos, usando a classe enum e calculando o tamanho de um array na expressão "novo".

Se você quiser saber mais sobre isso, você pode verificar os detalhes em o seguinte link. 


Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.