Cpp2Rust:自动将C++翻译为安全的Rust
Cpp2Rust自动将C++转换为完全安全的Rust。它是基于clang的AST的语法驱动翻译器。Cpp2Rust的算法在论文《Cpp2Rust: Automatic Translation of C++ to Safe Rust》中进行了描述,该论文发表于PLDI 2026。概述Cpp2Rust首先使用clang解析输入的C++文件,并生成AST。然后,它遍历AST并将Rust代码以字符串的形式输出,在需要的地方插入对libcc2rs运行时库的调用(例如,对于原始指针语义)。最后,使用rustfmt对Rust代码进行美化,生成一个单一的.rs文件。默认情况下,使用引用计数模型,生成完全安全的Rust。也可以通过--model=unsafe命令行参数生成不安全的Rust,用于调试和性能比较。运行时库(libcc2rs)生成的代码依赖于一个旨在简化翻译过程的运行时库。C指针被转换为libcc2rs提供的Ptr<T>类型。Ptr<T>模型C指针语义,包括空值、算术和别名,同时通过检查的运行时操作满足Rust的借用检查器。要求在Ubuntu上,通过以下命令安装所需的依赖项:sudo apt install libclang-22-dev clang++-22 ninja-build cmake curl -LsSf https://astral.sh/ruff/install.sh | sh 构建mkdir build cd build cmake -GNinja .. ninja ninja check 运行翻译单个文件./build/cpp2rust/cpp2rust --file=<file>.cpp -o=<file>.rs 默认情况下,使用引用计数模型(完全安全的输出)。要生成不安全的Rust:./build/cpp2rust/cpp2rust --file=<file>.cpp -o=<file>.rs --model=unsafe 最小示例。给定hello.cpp: #include <cstdio> int main() { printf(
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡