Universal dynamic rustc loader - no static linking required.
- Load
librustc_driver-{hash}.sofrom any Rust version - Call rustc_driver_main to compile files
- No static linking to rustc internals
- Works in CLI tools, compiler plugins, servers
- C FFI for GCC/LLVM plugins
- Nix-friendly
use librustc::RustcHandle;
fn main() {
let rustc = RustcHandle::load_from_env().unwrap();
let result = rustc.compile_file("hello.rs").unwrap();
println!("Compilation result: {}", result);
}let symbols = rustc.list_common_symbols();let result = rustc.compile(&["rustc", "file.rs", "--emit=mir"]).unwrap();export RUSTC_DRIVER_SO=$(find $(rustc --print sysroot)/lib -name "librustc_driver-*.so")nix develop
cargo build
cargo run --example simple tests/test.rs
cargo run --example compile tests/test.rs