Skip to content

Latest commit

 

History

History
108 lines (79 loc) · 2.6 KB

2022-10-28-roadmap.md

File metadata and controls

108 lines (79 loc) · 2.6 KB

Roadmap planning

Zulip discussion link: https://rust-lang.zulipchat.com/#narrow/stream/326132-t-types.2Fmeetings/topic/2022-10-28.20roadmap/near/306650004

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:

Shared library

  • Initiative? Not all of this?

Feature work and related

What features are relevant?

  • async? (how much)
  • 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

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
Loading