GitHub - immunant/c2rust:将 C 代码迁移到 Rust

主要观点:C2Rust 可帮助将符合 C99 标准的代码迁移到 Rust,其翻译器 c2rust transpile 生成的不安全 Rust 代码紧密反映输入的 C 代码,主要目标是保留功能,测试套件在翻译后应继续通过,但生成安全且符合习惯的 Rust 代码仍需手动工作,目前正在研究自动化部分工作。提供了多种安装方式(从 crates.io 安装、从 Git 安装)、翻译 C 到 Rust 的步骤(使用 compile_commands.json 文件等)、生成 compile_commands.json 文件的方法(通过 cmakemesonintercept-buildbearcompiledb等),还介绍了联系团队的方式(问题追踪器、discord 频道、邮箱)以及一些常见问题和许可信息。
关键信息

  • 支持的平台:macOS 和 Linux,跨编译暂不支持。
  • 安装要求:LLVM 7 或更高版本、Python 3.6 或更高版本、CMake 3.4.3 或更高版本、openssl (1.0)。
  • 安装方式:cargo install c2rust 等,需根据平台设置 LLVM_CONFIG_PATH
  • 翻译步骤:使用 c2rust transpile 命令,配合 compile_commands.json 文件等。
  • 生成文件方法:通过 cmakemesonintercept-buildbearcompiledb等工具。
    重要细节
  • 翻译器生成的 Rust 文件通过 C API 导出和导入函数,不会像正常 Rust 模块那样直接相互依赖。
  • 翻译器有已知限制,会对无法翻译的函数定义发出警告并尝试跳过。
  • 开发者文档提供了更多关于构建系统的细节。
  • 材料基于 BSD-3 风格许可证,C2Rust 翻译器受 Jamey Sharp 的 Corrode 翻译器启发,依赖 Emscripten 的 Relooper 算法。
阅读 24
0 条评论