-
Notifications
You must be signed in to change notification settings - Fork 310
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
added section on cranelift codegen #801
base: main
Are you sure you want to change the base?
Conversation
Idk how big of a deal it is, but the configuration the blog post this PR suggests doesn't work in projects that need to support Wasm. This is because per-target profiles aren't supported by Rust You could create a new profile to handle this but then you have to specify the profile every time. Instead it might be ideal to use rustflags for this as they can be specified per platform. Making cranelift still be used for linux but not for Wasm builds: Craneliftrustup component add rustc-codegen-cranelift-preview --toolchain nightly ~/.cargo/config.toml[target.x86_64-unknown-linux-gnu]
rustflags = ["-Zcodegen-backend=cranelift", ] Cranelift + Mold~/.cargo/config.toml[target.x86_64-unknown-linux-gnu]
rustflags = ["-Zcodegen-backend=cranelift", "-C", "link-arg=-fuse-ld=/usr/bin/mold"]
linker = "clang" Thanks to this blog post for helping me discover this as an option: https://benw.is/posts/how-i-improved-my-rust-compile-times-by-seventy-five-percent |
Though you wouldn't want to start shipping builds compiled with cranelift (for performance reasons) so maybe it's not a good idea to recommend that as it isn't limited to dev builds and people might forget to take it out. Personally I do my release builds in github actions so that wasn't a concern for me. |
@MalekiRe if you rebase this I'll merge it in :) |
@@ -200,6 +200,9 @@ Bevy can be built just fine using default configuration on stable Rust. However | |||
|
|||
For more information, see [The rustup book: Overrides](https://rust-lang.github.io/rustup/overrides.html#the-toolchain-file). | |||
|
|||
* **Cranelift Codegen**: This uses a new nightly-only codegen that can be 300% faster than LLVM! However it only currently works on Linux and is generally still immature. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
30% is a more realistic average.
It works fine on Windows now and x86_64 macOS (arm64 macOS has some ABI issues)
@@ -200,6 +200,9 @@ Bevy can be built just fine using default configuration on stable Rust. However | |||
|
|||
For more information, see [The rustup book: Overrides](https://rust-lang.github.io/rustup/overrides.html#the-toolchain-file). | |||
|
|||
* **Cranelift Codegen**: This uses a new nightly-only codegen that can be 300% faster than LLVM! However it only currently works on Linux and is generally still immature. | |||
[Cranelift codegen setup](https://bjorn3.github.io/2023/10/31/progress-report-oct-2023.html). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Maybe link to the setup section of the readme instead? Unlike this page it will be kept up to date if the setup changes.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Also it is possible to compile all dependencies with the LLVM backend and optimizations, but the main game crate with Cranelift to get much better runtime performance.
No description provided.