< 返回版块

zhuxiujia 发表于 2020-09-10 17:32

Tags:Rust自举加快编译速度赶超go

https://github.com/bjorn3/rustc_codegen_cranelift

WIP Cranelift Codegen后端防锈 ⚠⚠⚠ 某些FFI尚无法使用。 ⚠⚠⚠

该项目的目标是为基于Cranelift的锈编译器创建替代的代码源后端。这有可能缩短调试模式下的编译时间。如果您的项目不使用“尚不支持”下列出的任何内容,则可能工作正常。如果没有,请打开一个问题。

建造 $ git clone https://github.com/bjorn3/rustc_codegen_cranelift.git $ cd rustc_codegen_cranelift $ ./prepare.sh #下载和补丁SYSROOT src和安装超精细标杆 $ ./test.sh --release 用法 rustc_codegen_cranelift可以用作近简易替换为cargo build或cargo run现有项目。

假设$cg_clif_dir您是将此仓库克隆到的目录,并且您遵循了指示(prepare.sh和test.sh)。

货物 在您的项目的目录中(可以执行常规操作cargo build),运行:

$ $ cg_clif_dir /cargo.sh运行 这应该使用rustc_codegen_cranelift而不是通常的LLVM后端来构建和运行项目。

如果您在调试模式下编译了cg_clif(也就是您没有传递--release给./test.sh),则应该设置CHANNEL="debug"。

鲁斯特克 您应该更喜欢使用货运方法。

$ rustc + $( cat $ cg_clif_dir / rust-toolchain ) -Cpanic =中止-Zcodegen-backend = $ cg_clif_dir /target/release/librustc_codegen_cranelift.so --sysroot $ cg_clif_dir / build_sysroot / sysroot my_crate.rs 贝壳 这些是一些功能,使您可以使用cg_clif作为jit从外壳轻松运行rust代码。

函数 jit_naked() { echo “ $ @ ” | CG_CLIF_JIT = 1 rustc -Zcodegen-backend = $ cg_clif_dir /target/release/librustc_codegen_cranelift.so --sysroot $ cg_clif_dir / build_sysroot / sysroot--Cprefer-dynamic }

函数 jit() { jit_naked “ fn main(){ $ @ } ” }

函数 jit_calc() { JIT '的println( “0X {:X}!”,' $ @ “); ' ; } 环境变量 CG_CLIF_JIT 启用JIT模式可立即运行程序,而不是编写可执行文件。 CG_CLIF_JIT_ARGS 启用JIT模式后,将这些参数传递给程序。 CG_CLIF_INCR_CACHE_DISABLED 不要在增量缓存中缓存目标文件。在cg_clif的开发过程中很有用,可以使rustc进行的所有分析都可以使用增量模式,而无需更改对象文件的内容(而应通过更改cg_clif更改它们的内容)。 CG_CLIF_DISPLAY_CG_TIME 如果为“ 1”,则显示执行包装箱编码生成所花费的时间 尚不支持 良好的防锈abi支持(几个问题) 直列装配(不支持吊车) 在Linux中有用于调用外部汇编程序的支持global_asm!和asm!。 llvm_asm!永远不会执行。asm!尚不支持reg类。您必须指定特定的寄存器。 SIMD(在此进行跟踪,一些基本的功能有效)


Ext Link: https://github.com/bjorn3/rustc_codegen_cranelift

评论区

写评论
12101111 2020-09-10 21:32

我用的Gentoo, go的自举速度是2′24″ rust的编译速度是1:07:10 (不含llvm, USE="clippy miri nightly parallel-compiler rls rustfmt system-bootstrap system-llvm wasm", LLVM后端:AArch64 AMDGPU ARM RISCV WebAssembly X86) 要是真的能加快不说30倍,能加快3倍到20分钟以内,那就能大大改善使用体验(我这里LLVM的编译时间是26′13″)

1 共 1 条评论, 1 页