Os engenheiros do Meta (Facebook) anunciaram na segunda-feira o CIR, uma nova representação intermediária (IR) proposta para o front-end do compilador Clang C/C++ da LLVM que é baseado na representação MLIR.

CIR é o novo IR deles, que é a abreviação de”Clang IR”ou”C/C++ IR”e é outro esforço de código aberto do Meta/Facebook que eles esperam eventualmente fazer upstream. Eles esperam que este novo IR para Clang leve a diagnósticos aprimorados para programação C++ moderna, permita mais otimizações de alto nível em C++ e resolva outras deficiências com o AST/LLVM IR do Clang. Inspirado pelas representações intermediárias SIL de Swift e HIR/MIR de Rust, Meta espera que o CIR possa fornecer melhorias semelhantes para programadores de C++.

Entre os objetivos definidos para o CIR está fornecer melhores diagnósticos de correção/segurança/desempenho. Isso poderia levar a programas C++ mais seguros. Foi observado no anúncio do CIR,”Segurança/Bugs: A equipe do Google Chrome observa que cerca de 70% de seus bugs de segurança de alta gravidade são problemas de falta de segurança de memória. Metade dos quais são bugs use-after-free. Usando std::optional para ilustrar, o CIR poderia introduzir instruções para derefs opcionais (cir.std.optional.deref) e diagnosticá-los como prejudiciais se não forem dominados pela verificação se o objeto contém um valor (cir.std.optional.has_value).”

Os interessados ​​em saber mais sobre o CIR podem visitar o anúncio do Discurso LLVM. O código e a documentação do CIR no formato atual são hospedados pelo Facebook Incubator no GitHub.

O fundador da LLVM, Chris Lattner, já comentou sobre o esforço do CIR, várias vezes mencionando que é um”superfã”desse esforço. Ele também espera que ele se torne um projeto de incubadora LLVM e que mais desenvolvedores LLVM trabalhem nesse código e, finalmente, como uma solução upstream.

O CIR definitivamente será outro esforço interessante do LLVM a ser observado para melhorar essa pilha líder de compiladores de código aberto.

Categories: IT Info