La nuova versione di LLVM 9.0 è già stata rilasciata e queste sono le sue novità

LLVM

Dopo sei mesi di sviluppo è stato presentato il lancio della nuova versione del progetto LLVM 9.0, che è un toolkit compatibile con GCC (compilatori, ottimizzatori e generatori di codice), che compila i programmi in un codice bit intermedio di istruzioni virtuali simili a RISC (una macchina virtuale di basso livello con un sistema di ottimizzazione multi-livello).

È progettato per ottimizzare i tempi di compilazione, il tempo di binding, il tempo di esecuzione in qualsiasi linguaggio di programmazione che l'utente vuole definire. Originariamente implementato per compilare C e C ++, Design indipendente dal linguaggio di LLVM e successo del progetto hanno generato un'ampia varietà di lingue, inclusi Objective-C, Fortran, Ada, Haskell, Java bytecode, Python, Ruby, ActionScript, GLSL, Clang, Rust, Gambas e altri.

Lo pseudocodice generato può essere convertito utilizzando il compilatore JIT in istruzioni macchina direttamente al momento dell'esecuzione del programma.

Principali novità di LLVM 9.0

Tra le nuove funzionalità di LLVM 9.0 trovare supporto per rimuovere il tag di sviluppo sperimentale dalla piattaforma RISC-V, Supporto C ++ per OpenCL.

Un'altra novità quella risalta è la capacità di dividere il programma in parti caricate dinamicamente in LLD e l'implementazione del costrutto »asm goto» utilizzato nel codice del kernel Linux.

Inoltre, si evidenzia anche che Libc ++ è arrivato con il supporto per WASI (WebAssembly System Interface) e LLD ha introdotto il supporto iniziale per l'associazione dinamica di WebAssembly. Aggiunta l'implementazione dell'espressione specifica di GCC »asm goto», che consente di passare da un blocco inline assemblato a un tag in codice C.

Questa caratteristica è necessaria per costruire il kernel Linux in modalità »CONFIG_JUMP_LABEL = y« usando Clang su sistemi x86_64. Considerando le modifiche aggiunte nelle versioni precedenti, il kernel Linux può ora essere compilato in Clang per l'architettura x86_64 (in precedenza, era supportato solo per le architetture arm, aarch64, ppc32, ppc64le e mips.

È stato aggiunto il supporto per le istruzioni ITV (Branch Target Indicator) e PAC (Pointer Authentication Code) per l'architettura AArch64. Supporto notevolmente migliorato per le piattaforme MIPS, RISC-V e PowerPC.

Inoltre, I progetti Android e ChromeOS sono già passati all'utilizzo di Clang per creare il kernel e Google sta testando Clang come kernel principale della piattaforma di build per i suoi sistemi Linux in esecuzione.

In futuro, durante il processo di compilazione del kernel sarà possibile utilizzare altri componenti LLVM, inclusi LLD, llvm-objcopy, llvm-ar, llvm-nm e llvm-objdump.

Una funzione di partizione sperimentale è stata aggiunta al linker LLD, che consente di dividere un programma in più parti, ciascuna delle quali è collocata in un file ELF separato. Questa funzione consente di eseguire la parte principale del programma, che, se necessario, caricherà i componenti rimanenti nel processo (ad esempio, è possibile selezionare il visualizzatore PDF integrato come file separato, che verrà scaricato solo quando l'utente apre il file PDF).

D'altra parte, spiccano anche i numerosi miglioramenti nei backend. per architetture X86, AArch64, ARM, SystemZ, MIPS, AMDGPU e PowerPC.

Ad esempio, è stato aggiunto il supporto per le istruzioni SVE2 e MTE (Memory Tagging Extensions) per l'architettura AArch64, il supporto per l'architettura Armv8.1-M e l'architettura MVE è stato aggiunto al backend ARM.

Nel caso di AMDGPU, è stato aggiunto il supporto per l'architettura GFX10 (Navi), l'impostazione predefinita è abilitata per richiamare una funzione e passare il DPP (Data Primitives-Parallel) combinato attivato.

Il debugger LLDB ha introdotto all'indietro l'evidenziazione dei colori delle tracce; aggiunto il supporto per DWARF4 debug_types e DWARF5 debug_info blocchi;

Le utilità llvm-objcopy e llvm-strip hanno aggiunto il supporto per i file eseguibili e gli oggetti in formato COFF.

Il backend per l'architettura RISC-V è stabilizzato, che non è più posizionato come sperimentale ed è costruito per impostazione predefinita. Supporto completo per la generazione di codice per le varianti dei set di istruzioni RV32I e RV64I con estensioni MAFDC.

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


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile del trattamento: AB Internet Networks 2008 SL
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.