mrustc:进行中的替代Rust编译器(至C)

2021-03-01 04:39:20

进行中的替代rust编译器。能够构建完整的rustc副本,但尚不适合日常使用。

这个项目试图用C ++创建一个简单的rust编译器,最终目的是成为一个单独的重新实现。

mrustc的工作方式是:将假定有效的锈代码(即不进行借位检查)编译为高级程序集(当前使用C,但是LLVM / cretonne甚至直接的机器代码都可以工作),并使用外部代码生成器将其转换为优化的机器代码。之所以可行,是因为借用检查器对生成的代码没有任何影响,只是检查代码是否有效。

libz-dev(用于减小字节码文件的大小,仅适用于Linux-Windows使用vcpkg进行下载)

make -f minicargo.mk-构建mrustc和minicargo,然后构建libstd,libtest,最后构建rustc和cargo

下载rustc-1.29.0-src.tar.gz并将其解压缩到存储库根目录(这样就存在rustc-1.29.0-src目录)

要使用mrustc构建自己的代码,首先需要至少构建libcore(可能还有完整的标准库),这可以在Linux上通过运行make -f minicargo.mk LIBS来完成,或者在Windows上使用build_std.cmd来完成。

makefile和minicargo都将编译器的stdout写入输出目录中的文件,例如 生成output / libcore.hir时,它将保存到output / libcore.hir_dbg.txt。要获取完整的调试输出以进行编译运行,请将环境变量MRUSTC_DEBUG设置为要调试的遍历的:分隔列表( 通过名称会显示在每条日志行中)。 例如。 MRUSTC_DEBUG =展开:解析make -f minicargo.mk 发出(更多)人类可读的C代码(使用原始来源中的名称,减少/无限制)