皇上,还记得我吗?我就是1999年那个Linux伊甸园啊-----24小时滚动更新开源资讯,全年无休!

使用新 ClangIR 探索的“安全 C++”

自上个月以来,我一直想写一个有趣的“征求意见”提案,即开发“安全 C++”作为 LLVM Clang 编译器的扩展,并利用新的、正在开发的 ClangIR。

这不是第一次提出“安全”C++,而在 11 月底,徐传琦宣布了这项最新计划,即提出基于 ClangIR 中间表示的“安全 C++”,该表示将归结为 ISO C++ 的纯子集,具有一些可忽略的编译指示和属性。更简单的方法将允许其他不支持此“安全”方言的 C++ 编译器编译子集。

ClangIR 是新的中间表示 (IR),它一直在酝酿作为 C/C++ 语言的 MLIR 方言,在文档中被描述为介于 Clang 的 AST 和 LLVM IR 之间。ClangIR 可以处理 C/C++ 更高级别的语义,以实现更好的诊断和性能优化,这在纯 Clang AST 或 LLVM IR 中很难实现。那些想要了解更多关于正在开发的 ClangIR 的人可以通过正在进行的工作的文档来实现

Chuanqi Xu 正在寻求利用 ClangIR 来生成更安全的 C++,并且已经制作了一个演示实现。该提案包括添加一个编译指示“#pragma clang SafeCXX”,用于定义其他编译器在不支持时可以忽略的相同C++代码。同样,对于不安全C++代码的部分,也会有一个 “#pragma clang UnsafeCXX”。

我们的想法是使用基于 ClangIR 的安全 C++ 来提供借用检查、对已弃用调用的不同处理、弃用指针/获取地址/取消引用、异步函数中的引用以及其他更改,以通过更好地利用 LLVM/Clang 中的现代编译器技术来提高 C++ 代码的安全性。

使用新 ClangIR 探索的“安全 C++”

由于 ClangIR 本身尚未稳定下来,该提案还为时过早,但有兴趣的人可以在 LLVM Discourse 上查看 RFC 提案。一些早期的原型代码可以通过此 GitHub 存储库找到。看看这种安全的 C++ 工作以及 2025 年更广泛的 ClangIR 开发会带来什么,这将是一件有趣的事情。

转自 A “Safe C++” Being Explored Using The New ClangIR – Phoronix

已有 0 条评论 新浪微博
已有 0 条评论 新浪微博
-->