C2Rust 系列:第一期 - 从 C 到 Rust 的现代化代码迁移工具

C2Rust 是一个帮助将 C99 兼容代码迁移到 Rust 语言的工具。它提供了以下几个功能:

1. C 到 Rust 的翻译器:这个翻译器(或称为转译器)会产生与输入 C 代码紧密对应的不安全(unsafe)Rust 代码。翻译器的主要目标是生成功能上与输入 C 代码相同的代码。生成安全或符合 Rust 习惯的代码并不是翻译器的目标。相反,C2Rust 团队认为最好的方法是使用专门的重构工具逐步重写翻译后的 Rust 代码。为此,他们正在构建一个重构工具,将不安全的自动翻译 Rust 代码重写为更安全的习语。

2. Rust 代码重构工具:一些重构工作需要手工完成,这可能会引入错误。C2Rust 提供了  clang  和  rustc  的插件,允许你编译和运行两个二进制文件,并检查它们的行为是否相同(在函数调用的层面上)。

3. 交叉检查工具:这些工具用于交叉检查 C 代码与新 Rust 代码的执行情况,以确保它们在功能上是相同的。

C2Rust 的翻译器专注于支持 C99 标准。C 源代码在使用 C2Rust 的工具进行翻译之前,会使用 clang 进行解析和类型检查。

该项目在 BSD-3 许可证下可用,源代码和使用说明可以在它们的 git 仓库中找到。

可以从 crates.io 安装,也可以直接从 Git 仓库安装。安装前需要确保你的系统上安装了 LLVM 7 或更高版本及其对应的 clang 编译器和库,Python 3.6 或更高版本,CMake 3.4.3 或更高版本,以及 openssl(1.0)。

使用 C2Rust 翻译 C 代码到 Rust 的基本命令是:

c2rust transpile compile_commands.json

其中  compile_commands.json  是一个描述 C 构建的文件,许多构建系统可以自动生成这个文件。一旦你有了这个文件,就可以使用上述命令将 C 代码翻译成 Rust。

C2Rust 还在积极开发中,最近增加了对最新 Rust 夜间构建的支持,增加了一些新功能和 bug 修复,并为了引入一种新的生成安全 Rust 代码的方法,暂时放弃了 c2rust-refactor 工具。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

夜间出没的AGUI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值