Update README.md

Clarify that the translation between unstable and stable items is currently done in the `rustc_smir` crate.
This commit is contained in:
Celina G. Val 2024-10-24 16:19:55 -07:00 committed by GitHub
parent f1114babeb
commit aa2f9681db
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,7 +1,11 @@
This crate is currently developed in-tree together with the compiler. This crate is currently developed in-tree together with the compiler.
Our goal is to start publishing `stable_mir` into crates.io. Our goal is to start publishing `stable_mir` into crates.io.
Until then, users will use this as any other rustc crate, via extern crate. 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"](https://rust-lang.github.io/project-stable-mir/getting-started.html)
guide for more information.
## Stable MIR Design ## Stable MIR Design
@ -9,12 +13,16 @@ The stable-mir will follow a similar approach to proc-macro2. Its
implementation is split between two main crates: implementation is split between two main crates:
- `stable_mir`: Public crate, to be published on crates.io, which will contain - `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 and the stable data structure as well as calls to `rustc_smir` APIs. The
translation between stable and internal constructs. 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. - `rustc_smir`: This crate implements the public APIs to the compiler.
It is responsible for gathering all the information requested, and providing It is responsible for gathering all the information requested, and providing
the data in its unstable form. 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., I.e.,
tools will depend on `stable_mir` crate, tools will depend on `stable_mir` crate,
which will invoke the compiler using APIs defined in `rustc_smir`. which will invoke the compiler using APIs defined in `rustc_smir`.