Acaba de sair a mais nova versão do compilador LLVM 17 estável junto ao LLVM 17.0.1. Isso representa uma pequena correção de um erro na versão 17.0.0-rc. Sendo assim, a tag v17.0.0 original acabou ignorada. Esta versão estável do LLVM 17.0.1, juntamente com subprojetos como o compilador Clang 17 C/C++, trazem muitos novos recursos e melhorias. Então, LLVM 17.0 e Clang 17.0 acabam de ser lançados com muitos novos recursos de compilação.
O LLVM é um projeto de código aberto que fornece uma infraestrutura de compilador modular e reutilizável. Ele é usado por muitas linguagens de programação, ferramentas de análise estática e dinâmica, e sistemas operacionais. O LLVM 17 é a versão mais recente do projeto, lançada em novembro de 2023. Neste post, vamos explorar algumas das novidades do LLVM 17 e como elas podem beneficiar os desenvolvedores. Inclusive, o Ubuntu 23.10 já terá suporte ao lançamento.
Há muitas mudanças novas a serem encontradas na pilha do compilador LLVM 17, incluindo algumas adições notáveis, como:
- LLVM adiciona um pipeline FatLTO que permite gerar arquivos de objeto com código de máquina e bitcode compatível com LTO. O suporte LLVM para objetos Fat LTO permite o uso tanto para compilações de desenvolvimento quanto para binários otimizados.
- Suporte de montagem para extensões de perfil AArch64 Arm 2022 A de Guarded Control Stacks, Check Feature Status e ATS1A.
- O back-end AMDGPU LLVM tem sincronização mais refinada em torno de barreiras para GFX9 e mais recentes, suporte para Address Space 7 e 8 adicionado, vários novos intrínsecos são suportados e outros novos recursos.
- LLVM no LoongArch adiciona suporte de montador/desmontador para as extensões LSX, LASX, LVZ e LBT LoongArch ISA.
- Uma tonelada de melhorias de back-end RISC-V, incluindo suporte para muitas extensões ISA RISC-V mais recentes e outros novos recursos.
- LLVM 17 em x86/x86_64 adiciona suporte para recursos Intel ISA mais recentes, como SHA-512, SM3, SM4 e AVX-VNNI-INT16 com Arrow Lake e Lunar Lake .
- LLVM 17 adiciona o novo alvo Granite Rapids D (-mcpu=graniterapids-d).
- O otimizador BOLT do LLVM adiciona suporte inicial ao alvo RISC-V.
Logotipo da LLVM
No lado do Clang para este compilador C/C++, a atualização do Clang 17 fornece:
- Mais suporte a recursos do C++20 está em vigor, incluindo co-rotinas sendo totalmente suportadas agora em todos os destinos além do Windows.
- Várias melhorias de suporte a recursos do C++23, incluindo agora honrar a opção -std=c++23.
- Implementação de mais suporte a recursos C2x.
- Geração de código de nível de otimização -O0 aprimorada.
- Adicionando vários stdio integrados do GCC e fazendo outras melhorias de suporte à compatibilidade do GCC com novos sinalizadores.
- Uma grande variedade de melhorias de diagnóstico do Clang.
- Clang em x86/x86_64 agora suporta AMX-COMPLEX e outras novas extensões ISA, bem como -march=graniterapids-d para suporte a CPU Intel Granite Rapids.
- No lado CUDA/HIP, gnu++17 é agora o padrão em vez de c++14.
LLVM 17.0 + Clang 17.0 lançado com muitos novos recursos do compilador
Há também outro trabalho a ser encontrado com o LLVM 17, como melhorias no vinculador LLD com muitos aprimoramentos ELF, libc++ suportando mais recursos C++20 e C++23, e o front-end Flang continua melhorando também para suporte LLVM Fortran. Downloads e mais detalhes sobre o lançamento do LLVM 17.0.1 de hoje em LLVM.org.