---
# System prepended metadata

title: Types team 2023 roadmap deep dive

---

# Types team 2023 roadmap deep dive

## Major goals

* Building a platform that can scale to the new features we will need
* Sound, testable, documented type system
* Sustainable open-source team to maintain this

## Strategy over the next year years

### Zero soundness bugs
* 2023: Develop key tools we need to solve hard bugs: new trait solver, formality. Consider lints.
* 2024: Finalize trait solver, begin improving type system.
* 2025-2026: Fix and close all open issues. Any remaining issues are top priority to fix as they are opened.

### Model that is tested against rustc, fuzz tested, plus has a soundness proof

* Status as of March 2023: Experimental repository
* 2023: Introduce mir-formality as official Rust repository: fuzzing support, ability to test against rustc test suite
    * require modelling all new 'core typesystem features' in a mir-formality for stabilization
* 2024: Grow model by testing against Rust test suite, explore techniques for soundness proofs
* ... 
* 2027: Profit (this plan will require some elaboration lol).

### Develop a new trait solver which can be maintained and extended

* Examples of extensions we know we'll need: implications, lazy normalization, local/global caching
* Status as of March 2023: Experimental support in rustc
* 2023: ship 1 component of rustc with new solver on stable (e.g., coherence), able to compile crates with medium complexity using an experimental flag, develop migration plan
* 2024: new trait solver used across rustc (in migration mode), at least for Rust 2024 code (and maybe other editions)
* 2025: complete migration

## Tenets

* Soundness
    * fix easy things
    * but the main ones that are hard are hard because we need a better type sytem to be able to fix them in a satisfactory way
    * unless we think that there is a high chance of people writing broken code, I would rather we prioritize fixing them non-disruptively

## Big graph

```mermaid
flowchart TD
    subgraph 2023
        MirFormalityRfc
        TraitSolverNightly
    end
    
    subgraph 2024
        SoundnessInitiative
    end
    
    Soundness["Zero soundness bugs"]
    EaseOfUse["Expressivenss and core Rust ease of use"]
    
    MirFormalityRfc --> MirFormality
    TraitSolverNightly --> TraitSolver
    
    SoundnessInitiative --> Soundness
    
    TraitSolver
    MirFormality
    MirFormality --> Soundness
    TraitSolver --> Soundness
    
    Polonius --> EaseOfUse

    TAIT --> EaseOfUse
    
    Aliases --> EaseOfUse
    
    TraitSolver --> ExpandedImpliedBounds
    ExpandedImpliedBounds --> EaseOfUse
    
    GATImpliedBounds --> EaseOfUse
    
    EaseOfUse
```

## EOY 2023: New foundations designed and in initial use

- New trait solver replaces evaluate, but not used everywhere
- Onboarding plan and documentation for new trait solver
- MIR Formality integrated into language design process

**Trait solver.**

**a-mir-formality.** TODO ()

**Polonius.** TODO (lqd)

## EOY 2024: New foundations shipped and shared

**Soundness initiative begins.**

**GAT things?** TODO


- New trait solver shared by rustc and rust-analyzer
    - milestone: type-ir used by rustc/rust-analyzer
- Clean API for extensible trait errors / visualization
    - at least available internally
- Shiny new features:
    - Polonius
    - GAT implied bounds
    - impl trait every-dang-where
- Edition boundary things
    - Trait changes e.g. opt-in dyn-ness
    - Inference changes --
        - make `Into` stop inferring?
        - early-late interactions?

## EOY 2027: :euro: Profit :euro:

- (Types) I-unsound issues resolved :tada: 
- Most extensions are easy to do; large extensions are feasible
- MIR Formality passes 99.9% of Rust test suite

## What do we want out of this meeting?

- Update of what has been happening?
    - Where is the new trait solver?
- Edition boundary -- anything we want to do?

## Roadmap proposal

### 2023

**TAIT.**


### 2024



### 2027
