AI + clang 驱动的 C/C++ 工程到 Rust 的转译工具。
把现有的 C/C++ 工程(系统层、性能敏感、嵌入式等场景)半自动地迁移到 Rust:
- 解析:用
clang -ast-dump=json把 C/C++ 源码解析成精确 AST(保留 typedef / macro / 隐式转换等所有细节,弥补 Tree-sitter 的精度损失)。 - 语义层建模:把 clang AST 投影到独立于源语言的 IR(保留指针算术、位域、union、生命周期、调用约定等 C/C++ 特有语义)。
- AI 转译:在 IR 层面调用 LLM,把函数体、控制流、内存模型映射到安全/惯用的 Rust。AI 不直接读 C 源码——只读 IR + 必要的上下文切片,避免大上下文噪声。
- 验证:对同一组输入,比较原 C/C++ 实现和 Rust 实现的输出 / side effect / 性能,确保行为等价。
- clang 为权威解析器:绝不重新发明 C/C++ 解析器。所有语法/语义信息来自
clang(-Xclang -ast-dump=json或 libclang)。 - AI 限定在 IR 层:模型不接触完整源码,避免 hallucination 和上下文爆炸。
- 可验证优先于快:迁移正确性 > 单次迁移速度。每个 PR 必须能跑回归测试。
- 渐进式迁移:按 crate / 模块 / 文件粒度逐块转译,不要求一次性 whole program。
- C 子集(不依赖 C++ 类、模板)
- 函数级迁移(不做类型/宏全局替换)
- 保留
#include依赖声明,AI 输出unsafe extern "C" { ... }桩 - 回归测试:编译 + 同一输入下的输出对比
- 全自动 100% 迁移(C/C++ 项目现实复杂度太高,没有银弹)
- 取代
c2rust(互补关系:c2rust 适合机械转译,本工具适合 AI 辅助的可读性优化和增量重构) - GUI / IDE 插件
待定。