Rust 编译器结合 Cranelift 显著缩短调试构建时间

Rust 最新合并的 PR 显示,rustc_codegen_cranelift 已成为 Rust 编译器的代码生成器的替代方案。

rustc_codegen_cranelift 是基于 Cranelift 的代码生成器后端,目前处于实验性阶段。Cranelift 属于 WebAssembly 字节码联盟的一部分。

根据 PR 提交者的介绍,使用 Cranelift 的 Rustc 可以实现更快的调试构建,当在调试模式下编译 Rust 代码时,与调试模式下的 LLVM 构建相比,纯编译版本的编译时间大约缩短 20-30%。

Cranelift 是将目标无关的 IR 翻译为可执行机器代码的代码生成器。Cranelift 主要专注于 WebAssembly 领域,但在其他地方也引起了人们的兴趣。到目前为止,Cranelift 主要专注于为 x86_64 提供支持,其他 CPU 架构也处于不同的支持阶段。除此之外,Cranelift 也被探究用作 Firefox 中 IonMonkey JavaScript 编译器后端以及 Firefox SpiderMonkey 引擎 WebAssembly 后端的可能性。

rustc_codegen_cranelift 作为 Rust 的非默认实验性 Cranelift 后端被合并,其 GitHub repo 最近也发布了初始版本 v0.1.0 以作纪念。

目前看来,rustc_codegen_cranelift 的优势主要体现在优化了调试构建时间,而不是发布构建或由此产生的二进制性能方面。当然,随着 Cranelift 的成熟,相信它会提供更广泛的支持。

查看 Cranelift 文档介绍自己与 LLVM 的对比

猜你喜欢

转载自www.oschina.net/news/119524/rust-cranelift-merged