This crate is currently developed in-tree together with the compiler.
Our goal is to start publishing stable_mir into crates.io. Until then, users will use this as any other rustc crate, by installing the rustup component rustc-dev, and declaring stable-mir as an external crate.
See the StableMIR “Getting Started” guide for more information.
The stable-mir will follow a similar approach to proc-macro2. Its implementation is split between two main crates:
stable_mir: Public crate, to be published on crates.io, which will contain the stable data structure as well as calls to rustc_smir APIs. The translation between stable and internal constructs will also be done in this crate, however, this is currently implemented in the rustc_smir crate.[^translation].rustc_smir: This crate implements the public APIs to the compiler. It is responsible for gathering all the information requested, and providing the data in its unstable form.[^translation]: This is currently implemented in the rustc_smir crate, but we are working to change that.
I.e., tools will depend on stable_mir crate, which will invoke the compiler using APIs defined in rustc_smir.
I.e.:
    ┌──────────────────────────────────┐           ┌──────────────────────────────────┐
    │   External Tool     ┌──────────┐ │           │ ┌──────────┐   Rust Compiler     │
    │                     │          │ │           │ │          │                     │
    │                     │stable_mir| │           │ │rustc_smir│                     │
    │                     │          │ ├──────────►| │          │                     │
    │                     │          │ │◄──────────┤ │          │                     │
    │                     │          │ │           │ │          │                     │
    │                     │          │ │           │ │          │                     │
    │                     └──────────┘ │           │ └──────────┘                     │
    └──────────────────────────────────┘           └──────────────────────────────────┘
More details can be found here: https://hackmd.io/XhnYHKKuR6-LChhobvlT-g?view