Skip to content

Repository files navigation

c_cpp_to_rust

AI + clang 驱动的 C/C++ 工程到 Rust 的转译工具。

目标

把现有的 C/C++ 工程(系统层、性能敏感、嵌入式等场景)半自动地迁移到 Rust:

  1. 解析:用 clang -ast-dump=json 把 C/C++ 源码解析成精确 AST(保留 typedef / macro / 隐式转换等所有细节,弥补 Tree-sitter 的精度损失)。
  2. 语义层建模:把 clang AST 投影到独立于源语言的 IR(保留指针算术、位域、union、生命周期、调用约定等 C/C++ 特有语义)。
  3. AI 转译:在 IR 层面调用 LLM,把函数体、控制流、内存模型映射到安全/惯用的 Rust。AI 不直接读 C 源码——只读 IR + 必要的上下文切片,避免大上下文噪声。
  4. 验证:对同一组输入,比较原 C/C++ 实现和 Rust 实现的输出 / side effect / 性能,确保行为等价。

设计原则

  • clang 为权威解析器:绝不重新发明 C/C++ 解析器。所有语法/语义信息来自 clang-Xclang -ast-dump=json 或 libclang)。
  • AI 限定在 IR 层:模型不接触完整源码,避免 hallucination 和上下文爆炸。
  • 可验证优先于快:迁移正确性 > 单次迁移速度。每个 PR 必须能跑回归测试。
  • 渐进式迁移:按 crate / 模块 / 文件粒度逐块转译,不要求一次性 whole program。

范围(v0)

  • C 子集(不依赖 C++ 类、模板)
  • 函数级迁移(不做类型/宏全局替换)
  • 保留 #include 依赖声明,AI 输出 unsafe extern "C" { ... }
  • 回归测试:编译 + 同一输入下的输出对比

不做

  • 全自动 100% 迁移(C/C++ 项目现实复杂度太高,没有银弹)
  • 取代 c2rust(互补关系:c2rust 适合机械转译,本工具适合 AI 辅助的可读性优化和增量重构)
  • GUI / IDE 插件

License

待定。

About

AI + clang 驱动的 C/C++ 工程到 Rust 的转译工具

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages