---
# System prepended metadata

title: Roadmap planning

---

# 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
```