Name | Date | Size | #Lines | LOC | ||
---|---|---|---|---|---|---|
.. | 20-Jan-2022 | - | ||||
.github/workflows/ | H | 20-Jan-2022 | - | 246 | 198 | |
.vscode/ | H | 20-Jan-2022 | - | 74 | 73 | |
build_sysroot/ | H | 20-Jan-2022 | - | 358 | 318 | |
build_system/ | H | 20-Jan-2022 | - | 555 | 479 | |
docs/ | H | 20-Jan-2022 | - | 222 | 186 | |
example/ | H | 20-Jan-2022 | - | 2,216 | 1,719 | |
patches/ | H | 20-Jan-2022 | - | 532 | 478 | |
scripts/ | H | 20-Jan-2022 | - | 640 | 495 | |
src/ | H | 20-Jan-2022 | - | 11,163 | 9,229 | |
.cirrus.yml | H A D | 20-Jan-2022 | 741 | 26 | 25 | |
Cargo.lock | H A D | 20-Jan-2022 | 7.6 KiB | 305 | 270 | |
Cargo.toml | H A D | 20-Jan-2022 | 2.6 KiB | 75 | 60 | |
LICENSE-APACHE | H A D | 20-Jan-2022 | 11.1 KiB | 202 | 169 | |
LICENSE-MIT | H A D | 20-Jan-2022 | 1,023 | 24 | 21 | |
Readme.md | H A D | 20-Jan-2022 | 2.8 KiB | 76 | 50 | |
clean_all.sh | H A D | 20-Jan-2022 | 197 | 7 | 4 | |
rust-toolchain | H A D | 20-Jan-2022 | 104 | 4 | 3 | |
rustfmt.toml | H A D | 20-Jan-2022 | 99 | 5 | 4 | |
test.sh | H A D | 20-Jan-2022 | 200 | 14 | 7 | |
y.rs | H A D | 20-Jan-2022 | 4.4 KiB | 154 | 118 |
Readme.md
1# Cranelift codegen backend for rust 2 3The goal of this project is to create an alternative codegen backend for the rust compiler based on [Cranelift](https://github.com/bytecodealliance/wasmtime/blob/main/cranelift). 4This has the potential to improve compilation times in debug mode. 5If your project doesn't use any of the things listed under "Not yet supported", it should work fine. 6If not please open an issue. 7 8## Building and testing 9 10```bash 11$ git clone https://github.com/bjorn3/rustc_codegen_cranelift.git 12$ cd rustc_codegen_cranelift 13$ ./y.rs prepare # download and patch sysroot src and install hyperfine for benchmarking 14$ ./y.rs build 15``` 16 17To run the test suite replace the last command with: 18 19```bash 20$ ./test.sh 21``` 22 23This will implicitly build cg_clif too. Both `y.rs build` and `test.sh` accept a `--debug` argument to 24build in debug mode. 25 26Alternatively you can download a pre built version from [GHA]. It is listed in the artifacts section 27of workflow runs. Unfortunately due to GHA restrictions you need to be logged in to access it. 28 29[GHA]: https://github.com/bjorn3/rustc_codegen_cranelift/actions?query=branch%3Amaster+event%3Apush+is%3Asuccess 30 31## Usage 32 33rustc_codegen_cranelift can be used as a near-drop-in replacement for `cargo build` or `cargo run` for existing projects. 34 35Assuming `$cg_clif_dir` is the directory you cloned this repo into and you followed the instructions (`y.rs prepare` and `y.rs build` or `test.sh`). 36 37In the directory with your project (where you can do the usual `cargo build`), run: 38 39```bash 40$ $cg_clif_dir/build/cargo build 41``` 42 43This will build your project with rustc_codegen_cranelift instead of the usual LLVM backend. 44 45For additional ways to use rustc_codegen_cranelift like the JIT mode see [usage.md](docs/usage.md). 46 47## Configuration 48 49See the documentation on the `BackendConfig` struct in [config.rs](src/config.rs) for all 50configuration options. 51 52## Not yet supported 53 54* Inline assembly ([no cranelift support](https://github.com/bytecodealliance/wasmtime/issues/1041)) 55 * On Linux there is support for invoking an external assembler for `global_asm!` and `asm!`. 56 `llvm_asm!` will remain unimplemented forever. `asm!` doesn't yet support reg classes. You 57 have to specify specific registers instead. 58* SIMD ([tracked here](https://github.com/bjorn3/rustc_codegen_cranelift/issues/171), some basic things work) 59 60## License 61 62Licensed under either of 63 64 * Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or 65 http://www.apache.org/licenses/LICENSE-2.0) 66 * MIT license ([LICENSE-MIT](LICENSE-MIT) or 67 http://opensource.org/licenses/MIT) 68 69at your option. 70 71### Contribution 72 73Unless you explicitly state otherwise, any contribution intentionally submitted 74for inclusion in the work by you shall be dual licensed as above, without any 75additional terms or conditions. 76