Do not speak Portuguese? Translate this site with Google or Bing Translator

GCC 12.1 lançado com novas funcionalidades, melhorias, e correções

E foi lançado o GCC 12.1 com novas funcionalidades, melhorias, e correções. Confira as novidades e veja como instalar no Linux.

O GCC, ou GNU Compiler Collection, é um conjunto de compiladores de linguagens de programação produzido pelo projecto GNU para construir um sistema operacional semelhante ao Unix.

GNU Compiler Collection inclui front-ends para C, C++ , Objective-C, Fortran, Ada, Go e D, bem como bibliotecas para essas linguagens (libstdc++,…). O GCC foi originalmente escrito como o compilador para o sistema operacional GNU.

O GCC 12 já é o compilador do sistema para o Fedora 36, ​​e o GCC 12 também estará disponível no Red Hat Enterprise Linux no Red Hat Developer Toolset (versão 7) ou Red Hat GCC Toolset (versões 8 e 9).

E, agora, o lançamento da nova versão do compilador GCC (GNU Compiler Collection) 12.1 já foi anunciado e como em todas as principais versões do GCC, esta versão trará muitas adições, melhorias, correções de bugs e novas funcionalidades, além disso neste mês (23 de maio), o projeto completará 35 anos desde a formação do primeiro lançamento.

“Os desenvolvedores do GCC têm o orgulho de anunciar outro grande lançamento do GCC, 12.1.”

“Este ano comemoramos o 35º aniversário da primeira versão beta do GCC, e este mês comemoraremos 35 anos desde o lançamento do GCC 1.0!”

“Esta versão descarta o suporte para o formato de depuração STABS e introduz o suporte para o formato de depuração CTF [1]. As interfaces C e C++ continuam avançando com suporte expandido para funções nos próximos padrões C2X e C++23, e a C++ Standard Library melhora o suporte para partes experimentais de C++20 e C++23. A interface Fortran agora é totalmente compatível com TS 29113 para interoperabilidade com C.”

Novidades do GCC 12.1

GCC 12.1 lançado com novas funcionalidades, melhorias, e correções
GCC 12.1 lançado com novas funcionalidades, melhorias, e correções

Várias propostas foram implementadas nesta nova versão, por exemplo para as linguagens C e C++, uma função interna __builtin_dynamic_object_size foi adicionada para determinar o tamanho de um objeto, compatível com uma função Clang similar.

Adicionado suporte para o atributo “indisponível” para as linguagens C e C++ (por exemplo, você pode marcar funções que resultarão em erro quando usadas), bem como adicionado suporte para o “#elifdef” e “#elifdef” diretivas de pré-processamento. #elifndef» para as linguagens C e C++.

Observe também que o sinalizador “-Wbidi-chars” foi adicionado para avisar se caracteres UTF-8 são usados ​​incorretamente, alterando a ordem de exibição do texto bidirecional, bem como o sinalizador “-Warray-compare” para emitir um aviso. para comparar dois operandos que se referem a arrays.

Além disso, destaca-se a implementação dos padrões OpenMP 5.0 e 5.1 (Open Multi-Processing), que definem APIs e métodos para aplicar métodos de programação paralela em sistemas multicore e híbridos (CPU + GPU/DSP) com memória compartilhada e unidades de vetorização (SIMD), foi continuado.

Implementação também aprimorada da especificação de programação paralela OpenACC 2.6, que define os meios para descarregar operações em GPUs e processadores especializados como NVIDIA PTX e suporte adicional para instruções estendidas Intel AVX512-FP16 e o ​​tipo _Float16 para o back-end de compilação do código x86.

O front-end Fortran fornece suporte completo para a especificação TS 29113, que descreve as possibilidades de garantir a portabilidade entre o código Fortran e C.

Suporte obsoleto para o formato de armazenamento de informações de depuração “STABS” criado na década de 1980.

Adicionado suporte para a extensão __builtin_shufflevector(vec1, vec2, index1, index2, …) adicionada anteriormente ao Clang, que fornece uma única chamada para realizar operações comuns de embaralhamento e embaralhamento de vetores.

Ao usar o nível de otimização “-O2”, a vetorização é habilitada por padrão (os modos -ftree-vectorize e -fvect-cost-model=very-cheap estão habilitados).

O modelo “muito barato” permite a vetorização apenas se o código vetorial puder substituir completamente o código escalar vetorizável.

Adicionado o modo “-ftrivial-auto-var-init” para permitir a inicialização de variável explícita na pilha para rastrear problemas e bloquear vulnerabilidades associadas ao uso de variáveis ​​não inicializadas.

Adicionada implementação de funções C integradas ao compilador (Intrinsics) para carregamento atômico e armazenamento de dados na memória, com base no uso de instruções ARM estendidas (ls64).

Adicionado suporte para acelerar as funções memcpy, memmove e memset usando a extensão ARM mopoption.

Adicionado um novo modo de verificação “-fsanitize=shadow-call-stack” ( ShadowCallStack ), que atualmente está disponível apenas para a arquitetura AArch64 e funciona ao compilar código com a opção “-ffixed-r18”.

O modo fornece proteção contra reescrever o endereço de retorno da função no caso de estouro de buffer de pilha.

A essência da proteção é salvar o endereço de retorno em uma pilha “sombra” separada após a transferência do controle para a função e recuperar esse endereço antes de sair da função.

Para saber mais sobre essa versão do GCC, acesse a nota de lançamento.

Como instalar ou atualizar o GCC

O GCC faz parte do padrão da maioria das distribuições Linux, e em algumas, já vem instalado. Portanto, para receber a versão mais recente desse software, basta apenas manter seu sistema atualizado ou usar a central de programas dele.

Sobre o Edivaldo Brito

Edivaldo Brito é analista de sistemas, gestor de TI, blogueiro e também um grande fã de sistemas operacionais, banco de dados, software livre, redes, programação, dispositivos móveis e tudo mais que envolve tecnologia.

Deixe um comentário

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.