mirror of
				https://github.com/rust-lang/rust.git
				synced 2025-10-31 04:57:19 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			66 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			66 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # Usage
 | |
| 
 | |
| rustc_codegen_cranelift can be used as a near-drop-in replacement for `cargo build` or `cargo run` for existing projects.
 | |
| 
 | |
| Assuming `$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`).
 | |
| 
 | |
| ## Cargo
 | |
| 
 | |
| In the directory with your project (where you can do the usual `cargo build`), run:
 | |
| 
 | |
| ```bash
 | |
| $ $cg_clif_dir/build/cargo build
 | |
| ```
 | |
| 
 | |
| This will build your project with rustc_codegen_cranelift instead of the usual LLVM backend.
 | |
| 
 | |
| ## Rustc
 | |
| 
 | |
| > You should prefer using the Cargo method.
 | |
| 
 | |
| ```bash
 | |
| $ $cg_clif_dir/build/bin/cg_clif my_crate.rs
 | |
| ```
 | |
| 
 | |
| ## Jit mode
 | |
| 
 | |
| In jit mode cg_clif will immediately execute your code without creating an executable file.
 | |
| 
 | |
| > This requires all dependencies to be available as dynamic library.
 | |
| > The jit mode will probably need cargo integration to make this possible.
 | |
| 
 | |
| ```bash
 | |
| $ $cg_clif_dir/build/cargo jit
 | |
| ```
 | |
| 
 | |
| or
 | |
| 
 | |
| ```bash
 | |
| $ $cg_clif_dir/build/bin/cg_clif -Cllvm-args=mode=jit -Cprefer-dynamic my_crate.rs
 | |
| ```
 | |
| 
 | |
| There is also an experimental lazy jit mode. In this mode functions are only compiled once they are
 | |
| first called.
 | |
| 
 | |
| ```bash
 | |
| $ $cg_clif_dir/build/cargo lazy-jit
 | |
| ```
 | |
| 
 | |
| ## Shell
 | |
| 
 | |
| These are a few functions that allow you to easily run rust code from the shell using cg_clif as jit.
 | |
| 
 | |
| ```bash
 | |
| function jit_naked() {
 | |
|     echo "$@" | $cg_clif_dir/build/bin/cg_clif - -Cllvm-args=mode=jit -Cprefer-dynamic
 | |
| }
 | |
| 
 | |
| function jit() {
 | |
|     jit_naked "fn main() { $@ }"
 | |
| }
 | |
| 
 | |
| function jit_calc() {
 | |
|     jit 'println!("0x{:x}", ' $@ ');';
 | |
| }
 | |
| ```
 | 
