It might be worth looking at using the Cranelift backend as the default (or opt-in) backend for development on the core repo. It would allow for faster debug builds, but wouldn't replace prod builds. I saw somewhere this morning that runtime performance is \~14% slower than the LLVM backend, which I imagine is alright for dev stuff.
LLVM backend clean compilation:
Cranelift backend clean compilation:
LLVM backend incremental compilation:
Cranelift backend incremental compilation:
One potential blocker is that Cranelift doesn't work on all platforms yet. For developing on Linux, it's fine (so Codespaces will work), but Apple Silicon (including devcontainers) wouldn't work. Bolt might be able to see this ahead of time and opt out of using Cranelift if the platform isn't installed.
It might be worth looking at using the Cranelift backend as the default (or opt-in) backend for development on the core repo. It would allow for faster debug builds, but wouldn't replace prod builds. I saw somewhere this morning that runtime performance is \~14% slower than the LLVM backend, which I imagine is alright for dev stuff.
LLVM backend clean compilation:
Cranelift backend clean compilation:
LLVM backend incremental compilation:
Cranelift backend incremental compilation:
One potential blocker is that Cranelift doesn't work on all platforms yet. For developing on Linux, it's fine (so Codespaces will work), but Apple Silicon (including devcontainers) wouldn't work. Bolt might be able to see this ahead of time and opt out of using Cranelift if the platform isn't installed.
https://github.com/rust-lang/rustc_codegen_cranelift?tab=readme-ov-file#platform-support
Current steps I see: