rustc_driver and rustc_interface

rustc_driver

The rustc_driver is essentially rustc's main function. It acts as the glue for running the various phases of the compiler in the correct order, using the interface defined in the rustc_interface crate. Where possible, using rustc_driver rather than rustc_interface is recommended.

The main entry point of rustc_driver is rustc_driver::run_compiler. This builder accepts the same command-line args as rustc as well as an implementation of Callbacks and a couple of other optional options. Callbacks is a trait that allows for custom compiler configuration, as well as allowing custom code to run after different phases of the compilation.

rustc_interface

The rustc_interface crate provides a low level API to external users for manually driving the compilation process, allowing third parties to effectively use rustc's internals as a library for analyzing a crate or for ad hoc emulating of the compiler for cases where rustc_driver is not flexible enough (i.e. rustdoc compiling code and serving output).

The main entry point of rustc_interface (rustc_interface::run_compiler) takes a configuration variable for the compiler and a closure taking a yet unresolved Compiler. run_compiler creates a Compiler from the configuration and passes it to the closure. Inside the closure you can use the Compiler to call various functions to compile a crate and get the results. You can see a minimal example of how to use rustc_interface here.

You can see an example of how to use the various functions using rustc_interface needs by looking at the rustc_driver implementation, specifically rustc_driver_impl::run_compiler (not to be confused with rustc_interface::run_compiler).

Warning: By its very nature, the internal compiler APIs are always going to be unstable. That said, we do try not to break things unnecessarily.

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy