my rust fork
https://www.rust-lang.org
The former calculates byte offsets instead of char offsets. It is faster to calculate byte offsets than char offsets. Also most DWARF producers and consumers use byte offsets instead of char offsets. |
||
|---|---|---|
| build_sysroot | ||
| crate_patches | ||
| example | ||
| patches | ||
| src | ||
| .gitignore | ||
| .travis.yml | ||
| abc.cpp | ||
| Cargo.lock | ||
| cargo.sh | ||
| Cargo.toml | ||
| clean_all.sh | ||
| config.sh | ||
| copy.clif | ||
| flamegraph.sh | ||
| LICENSE-APACHE | ||
| LICENSE-MIT | ||
| prepare.sh | ||
| Readme.md | ||
| rust-toolchain | ||
| rustup.sh | ||
| test.sh | ||
WIP Cranelift codegen backend for rust
⚠⚠⚠ Threads and certain kinds of FFI don't work yet. ⚠⚠⚠
Building
$ git clone https://github.com/bjorn3/rustc_codegen_cranelift.git
$ cd rustc_codegen_cranelift
$ ./prepare.sh # download and patch sysroot src and install hyperfine for benchmarking
$ ./test.sh --release
Usage
$cg_clif_dir is the directory you cloned this repo into in the following instruction.
Cargo
$ CHANNEL="release" $cg_clif_dir/cargo.sh run
If you compiled cg_clif in debug mode you should use CHANNEL="debug" instead or omit CHANNEL="release" completely.
Rustc
$ rustc -Cpanic=abort -Zcodegen-backend=$cg_clif_dir/target/release/librustc_codegen_cranelift.so --sysroot $cg_clif_dir/build_sysroot/sysroot my_crate.rs
Not yet supported
- Good non-rust abi support (several problems)
- Checked binops (some missing instructions in cranelift)
- Inline assembly (no cranelift support, not coming soon)
- SIMD (tracked here, some basic things work)