LLVM 6 riduce il rischio di Spectre, ha migliorato il supporto per Windows e CPU Intel e include anche WebAssembly nel numero di piattaforme di destinazione supportate.
L'infrastruttura del compilatore LLVM si è evoluta da una cosa tecnicamente curiosa a una parte viva del moderno panorama del software. Questo è il kernel dietro il compilatore Clang, i compilatori per i linguaggi Rust e Swift e offre ampie opportunità per lo sviluppo di compilatori per nuove lingue.
È anche un progetto in rapida evoluzione, le sue principali versioni sono pubblicate ogni sei mesi o vicino ad essa. La versione 6.0, rilasciata di recente, continua la missione di LLVM di approfondire ed espandere il supporto per varie piattaforme di destinazione. L'aggiornamento aggiunge anche alcune patch contro le vulnerabilità a livello di processore appena scoperte.
In LLVM è stata aggiunta una protezione parziale da Spectre
Vulnerabilità CPU Spectre e Meltdown sfruttano le prestazioni speculative dei processori moderni. Sono difficili da risolvere, poiché richiedono la modifica sia del microcodice della CPU sia del software esistente.
Per applicazioni compilate utilizzando LLVM, contribuiscono alla lotta contro queste vulnerabilità, la LLVM supporta le cosiddette "retpolines", costrutti di programmazione, che in parte riducono la possibilità attacco Spettro. Per utilizzare questa funzione, è necessario ricompilare programmi con LLVM 6.0 con la chiave -mretpoline.
Miglioramento del debug di LLVM CodeView per Windows
Microsoft Windows utilizza le informazioni di debug memorizzate nel formato CodeView, in modo simile al formato DWARF utilizzato sui sistemi Linux.
Il supporto CodeView LLVM è stato aggiunto in precedenza, come parte degli sforzi globali per sviluppare LLVM sotto Windows, e il miglioramento degli strumenti di debug per Windows utilizzando CodeView.
LLVM 6 migliora ulteriormente questo supporto, sia con l'aiuto di Microsoft, sia attraverso un'attenta progettazione inversa del team LLVM. I piani a lungo termine consistono nel migliorare il supporto per CodeView al punto in cui le lingue diverse da C / C ++ compilate in LLVM possono utilizzare in modo affidabile CodeView nei loro strumenti.
LLVM supporta WebAssembly come destinazione del collegamento
WebAssembly, un formato di applicazione binaria per un browser Web, ha iniziato ad evolversi dalla fase dell'esperimento fino allo stadio della tecnologia utilizzata nella produzione. La parte fondamentale di WebAssembly, la stessa di Emscripten e PNaCL, è LLVM.
Il passo più recente nel supporto del collegamento WebAssembly in LLVM era lo strumento wasm-ld. Questo strumento prende come input assembler creato LLVM (Target wasm32-unknown-unknown-wasm) , e genera un file binario WebAssembly pronto per l'uso.
Il supporto di WebAssembly è ancora incompleto e il lavoro su WebAssembly è ancora in corso, ma LLVM rimarrà un elemento chiave dello stack di WebAssembly.
LLVM ha migliorato il supporto per la CPU Intel
I programmi LLVM ora hanno la possibilità di utilizzare le istruzioni di molte famiglie di processori Intel: Sandy Bridge, Ivy Bridge, Haswell, Broadwell e Skylake. Anche Intel Icelake è ora supportato.
Attualmente LLVM genera il codice per i processori Intel con estensioni vettoriali: Vaes, gfni, VPCLMULQDQ, AVX512VBMI2 , AVX512BITALG e AVX512VNNI.
La generazione del codice è migliorata per varie operazioni dei processori Intel, come i confronti della memoria, i troncamenti vettoriali, la moltiplicazione del vettore con un valore intero a 32 bit.
Nessun commento:
Posta un commento