E foi lançado o GCC 13.1 com novidades, 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) 13.1 já foi anunciado.
Novidades do GCC 13.1
Sim. Após um ano de desenvolvimento, foi anunciado o lançamento do popular sistema de compilação “GCC 13.1”, marcando o primeiro lançamento significativo na nova ramificação GCC 13.x.
Sob o novo esquema de numeração de versão, a versão 13.0 foi usada durante o desenvolvimento e, pouco antes do lançamento do GCC 13.1, a ramificação GCC 14.0 já havia sido bifurcada, a partir da qual a próxima versão principal do GCC 14.1 será formada.
Nesta nova versão lançada do GCC 13.1, destaca-se a adoção de uma interface para criação de programas na linguagem de programação Modula-2, que suporta código de construção em conformidade com os dialetos PIM2, PIM3 e PIM4, além do padrão ISO aceito para esse idioma.
Além disso, vale destacar também que um frontend com a implementação do compilador de linguagem Rust preparado pelo projeto gccrs (GCC Rust) foi adicionado à árvore fonte do GCC.
Na visualização atual, a interface é marcada como experimental e desativada por padrão. Uma vez que a interface esteja pronta (o que é esperado na próxima versão), o kit de ferramentas GCC padrão pode ser usado para compilar programas Rust sem a necessidade de instalar o compilador rustc construído com builds LLVM.
Link-in-Step Optimization (LTO) adiciona suporte para um servidor de tarefas mantido pelo projeto GNU make para otimizar a execução paralela de construção em vários threads. No GCC, o servidor de trabalho é usado para paralelizar o trabalho durante a otimização LTO no contexto de todo o programa (WPA, análise completa do programa).
Outra das mudanças que se destaca é que foi implementada a capacidade de gerar diagnósticos no formato SARIF com base em JSON.
O novo formato pode ser usado para obter resultados de análises estáticas (GCC -fanalyzer), bem como para obter informações sobre avisos e erros.
A habilitação é feita com a opção “-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file”, onde as opções com “json” resultam em uma variante específica do GCC do formato JSON.
Algumas funcionalidades definidas no padrão C23 C foram implementadas, como a constante nullptr para definir ponteiros nulos, facilitando o uso de listas com número variável de argumentos (variadic), estendendo as capacidades de enumerações, o atributo noreturn, permitindo o uso de constexpr e auto ao definir objetos, typeof e typeof_unqual, novas palavras-chave alignas, alignof, bool, false, static_assert, thread_local e true, permitindo parênteses vazios na inicialização.
libstdc++ melhorou o suporte experimental para os padrões C++20 e C++23, como adicionar suporte para e std::format arquivo de cabeçalho, expandir os recursos do arquivo de cabeçalho , adicionar tipos adicionais de ponto flutuante, implementar e .
Das outras mudanças que se destacam no GCC 13.1, temos os seguintes itens:
- Adicionados novos atributos de função para documentar que um descritor de arquivo é passado em uma variável inteira: “__attribute__((fd_arg(N)))”, “__attribute__((fd_arg_read(N)))” e “__attribute__((fd_arg_write( N)) )) “.
- Os atributos especificados podem ser usados em um analisador estático (-fanalyzer) para detectar trabalho incorreto com descritores de arquivo.
- Adicionado um novo atributo ” __attribute__((assume(EXPR))) ” que pode ser usado para informar ao compilador que uma expressão é verdadeira e o compilador pode usar esse fato sem avaliar a expressão.
- O suporte para as CPUs STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c) e Arm Cortex-M85 (cortex-m85) foi adicionado ao back-end da arquitetura ARM.
- Adicionado suporte para processadores Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids e AMD Zen 4 (znver4) ao back-end x86.
- As extensões propostas de arquitetura de conjunto de instruções AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT e AMX-COMPLEX foram implementadas em processadores Intel.
- Para C e C++ em sistemas com SSE2, o tipo __bf16 é fornecido.
- O back-end de geração de código para GPUs AMD Radeon (GCN) implementa a capacidade de usar os aceleradores AMD Instinct MI200 para melhorar o desempenho do OpenMP/OpenACC.
- Melhor vetorização usando instruções SIMD.
- Os recursos de back-end da plataforma LoongArch foram significativamente expandidos.
Adicionado suporte para CPU T-Head XuanTie C906 (thead-c906) no back-end RISC-V. - Suporte implementado para controladores vetoriais definidos na especificação RISC-V Vector Extension Intrinsic 0.11.
- Adicionado suporte para 30 extensões de especificação RISC-V.
- O suporte para o formato de depuração DWARF é implementado em quase todas as configurações.
- Adicionada a opção “-gz=zstd” para compactar informações de depuração usando o algoritmo Zstandard.
- Suporte removido para o modo obsoleto de compactação de informações de depuração “-gz=zlib-gnu”.
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.