A nova versão do LLVM 9.0 já foi lançada e essas são suas novidades

LLVM

Após seis meses de desenvolvimento foi apresentado o lançamento da nova versão do projeto LLVM 9.0, que é um kit de ferramentas compatível com GCC (compiladores, otimizadores e geradores de código), que compila programas em um código de bits intermediário de instruções virtuais semelhantes a RISC (uma máquina virtual de baixo nível com um sistema de otimização de vários níveis).

Ele é projetado para otimizar o tempo de compilação, o tempo de ligação, o tempo de execução em qualquer linguagem de programação que o usuário deseja definir. Implementado originalmente para compilar C e C ++, O design agnóstico de linguagem do LLVM e o sucesso do projeto geraram uma grande variedade de idiomas, incluindo Objective-C, Fortran, Ada, Haskell, bytecode Java, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas e outros.

O pseudo-código gerado pode ser convertido usando o compilador JIT em instruções de máquina diretamente no momento da execução do programa.

Principais novos recursos do LLVM 9.0

Entre os novos recursos do LLVM 9.0 encontrou suporte para remover a tag de desenvolvimento experimental da plataforma RISC-V, Suporte C ++ para OpenCL.

Outra novidade que se destaca é a capacidade de dividir o programa em partes carregadas dinamicamente no LLD e a implementação da construção »asm goto» usada no código do kernel Linux.

Além disso, também é destacado que Libc ++ chegou com suporte para WASI (WebAssembly System Interface) e LLD introduziram o suporte inicial para vinculação dinâmica WebAssembly. Adicionada a implementação da expressão específica do GCC »asm goto», que permite alternar de um bloco embutido montado para uma tag no código C.

Este recurso é necessário para construir o kernel Linux no modo »CONFIG_JUMP_LABEL = y« usando Clang em sistemas x86_64. Considerando as mudanças adicionadas nas versões anteriores, o kernel Linux agora pode ser construído no Clang para a arquitetura x86_64 (anteriormente, ele era compatível apenas com as arquiteturas arm, aarch64, ppc32, ppc64le e mips.

Suporte para instruções BTI foi adicionado (Branch Target Indicator) e PAC (Pointer Authentication Code) para a arquitetura AArch64. Suporte significativamente aprimorado para plataformas MIPS, RISC-V e PowerPC.

Além disso, Projetos Android e ChromeOS já passaram a usar o Clang para construir o kernel e o Google está testando o Clang como o principal kernel da plataforma de construção para seus sistemas Linux em execução.

No futuro, durante o processo de compilação do kernel, será possível usar outros componentes LLVM, incluindo LLD, llvm-objcopy, llvm-ar, llvm-nm e llvm-objdump.

Uma função de partição experimental foi adicionada ao vinculador LLD, que permite que um programa seja dividido em várias partes, cada uma delas colocada em um arquivo ELF separado. Este recurso permite que você execute a parte principal do programa, que, conforme necessário, carregará os componentes restantes do processo (por exemplo, você pode selecionar o visualizador de PDF integrado como um arquivo separado, que será baixado apenas quando o usuário abre o arquivo PDF).

Por outro lado, as inúmeras melhorias nos back-ends também se destacam. para arquiteturas X86, AArch64, ARM, SystemZ, MIPS, AMDGPU e PowerPC.

Por exemplo, o suporte para as instruções SVE2 e MTE (Memory Tagging Extensions) foi adicionado para a arquitetura AArch64, o suporte para a arquitetura Armv8.1-M e a arquitetura MVE foram adicionados ao backend ARM.

No caso do AMDGPU, o suporte para a arquitetura GFX10 foi adicionado (Navi), o padrão é habilitado para invocar uma função e passar o DPP combinado ativado (Data Primitives-Parallel).

O depurador LLDB introduziu realce de cores de traços para trás; adicionado suporte para blocos DWARF4 debug_types e DWARF5 debug_info;

Os utilitários llvm-objcopy e llvm-strip adicionaram suporte para arquivos e objetos executáveis ​​no formato COFF.

Back-end para arquitetura RISC-V está estabilizado, que não está mais posicionado como experimental e é criado por padrão. Suporte total para geração de código para as variantes do conjunto de instruções RV32I e RV64I com extensões MAFDC.

fonte: http://releases.llvm.org/


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: AB Internet Networks 2008 SL
  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.