# Roadmap planning
# Big pieces
* formality (i.e., model)
* shared library for trait solver between rust/r-a, with intermediate steps of
* improved diagnostics for trait system
* refactored rustc implementation
* Chalk?
* rustc-type-ir/chalk-ty
* feature work (intersects both the above), such as...
* improvements on generic associated types
* improvements on impl Trait (e.g., TAITs, RPITIT)
* soundness fixes, especially for higher-ranked stuff
### Formality
Key questions:
- When to move to rust-lang org?
Goals for next year:
* testing against rustc (and chalk)
* modeling borrow check, trait solving, type checking from MIR backwards, with some elements of lowering into MIR as needed
* integrated into our language design processes (new features modeled)
Specific questions to probe:
* [erased lifetimes](https://rust-lang.zulipchat.com/#narrow/stream/326132-t-types.2Fmeetings/topic/2022-10-28.20roadmap/near/306657313)
*
### Shared library
- Initiative? Not all of this?
### Feature work and related
What features are relevant?
- async? (how much)
- https://github.com/rust-lang/rust/issues/60658
- RPITIT
- lead: Niko/tmandry
- other: Michael
- AFIT
- lead: Niko/tmandry
- other: Michael
- TAITs
- lead: oli
- existential lifetime parameters for cleaner TAIT impl?
- lead: nobody
- - GATs
- lead: Jack
- Subgoals:
- Implied 'static
- Object safety
- `for<'a> <_ as Trait>::Assoc<'a>: OtherTrait` goals
- polonius
- lead: Niko
- others: lqd
- keyword generics
- const traits
- negative trait impls
- lead: Niko
- others: santiago
- const eval
- `impl Trait` interaction?
- implication types
- lead: Jack?
### GATs
## Timelines and meetings
## Questions
### Is layout under our purview?
Seemingly no? Probably more of an opsem team thing.
### Active initiatives and planned work that goes beyond that
Can we chart it out
```mermaid
flowchart LR
a-mir-formality
class a-mir-formality active_development;
rustc-trait-solver-rewrite
class rustc-trait-solver-rewrite active_development;
shared-trait-solver-library
class shared-trait-solver-library blocked;
rustc-trait-solver-rewrite --> shared-trait-solver-library
polonius
class polonius active_development;
classDef active_development fill:#B10DC9,color:white
classDef blocked fill:#0074D9,color:lightgrey
classDef stalled fill:#0074D9,color:white
```