Lunedì gli ingegneri di Meta (Facebook) hanno annunciato CIR, una nuova proposta di rappresentazione intermedia (IR) per il front-end del compilatore Clang C/C++ di LLVM che si basa sulla rappresentazione MLIR.

CIR è il loro nuovo IR che è l’abbreviazione di”Clang IR”o”C/C++ IR”ed è un altro sforzo open source di Meta/Facebook che sperano di poter eventualmente eseguire a monte. Sperano che questo nuovo IR per Clang porti a una migliore diagnostica per la moderna programmazione C++, consenta più ottimizzazioni di alto livello C++ e affronti altre carenze con AST/LLVM IR di Clang. Ispirato dalle rappresentazioni intermedie SIL di Swift e HIR/MIR di Rust, Meta spera che CIR possa fornire miglioramenti simili per i programmatori C++.

Tra gli obiettivi definiti per CIR c’è quello di fornire una migliore diagnostica per correttezza/sicurezza/prestazioni. Questo alla fine potrebbe portare a programmi C++ più sicuri. È stato notato nell’annuncio CIR,”Sicurezza/Bug: il team di Google Chrome rileva che circa il 70% dei loro bug di sicurezza ad alta gravità sono problemi di non sicurezza della memoria. La metà dei quali sono bug use-after-free. Using std::optional per illustrare, CIR potrebbe introdurre istruzioni per deref opzionali (cir.std.optional.deref) e diagnosticarle come dannose se non sono dominate dal controllo se l’oggetto contiene un valore (cir.std.optional.has_value).”

Chi è interessato a saperne di più su CIR può visitare l’annuncio del Discorso LLVM. Il codice CIR e la documentazione nella forma attuale sono ospitati da Facebook Incubator su GitHub.

Il fondatore di LLVM Chris Lattner ha già commentato lo sforzo di CIR, menzionando più volte che è un”superfan”di questo sforzo. Spera anche che diventi un progetto di incubazione LLVM e che più sviluppatori LLVM lavorino su questo codice e, in definitiva, come soluzione a monte.

CIR sarà sicuramente un altro interessante sforzo LLVM da tenere d’occhio per migliorare questo stack di compilatori open source leader.

Categories: IT Info