wg-traits 2020 sprint planning

What is this document

We are attempting to organize ourselves in “roughly 6 week sprints”. We’re still experimenting. This doc is a “brainstorming” place for people to drop down project ideas that they would either like to undertake or to mentor

Sprint information

Sprint start: Feb 11
Sprint end: ~March 24

Planning thoughts

Use this space to write down things you would either like to undertake or to mentor.  You can also note places where you would like collaborators. Feel free to comment on other people’s thoughts. Feel free to add a section with your name etc (make it “h3”, i.e., ###). Feel free to also just add other thoughts about goals or what not.

Because emoji makes everything more fun (you can have more than one, too):

  • 🏫 if you would like to mentor something
  • 🛠️ if you would like to undertake it
  • 💁 if you are looking for collaborators

nikomatsakis

Side note: I’m dumping all the things that I can think of here, I figure this is probably too much.

  • 🛠️ 💁 Try to document more the overall plan that we are working towI’m going ards and bigger picture. I think ideally this would be done “collaboratively” with someone who wants to help long term. I am wondering what the best format for this is —?
  • Goal: Leak Check removal in rustc
  • 🛠️ 🏫 Extend NLL solver to continue with leak-check removal (rustc)
  • 🛠️ 🏫 Explore a more conservative version of leak-check removal that can accept wasm bindgen (rustc)
  • 🛠️ Refactor chalk to move towards syntactic equality (chalk)
  • Introduce a Visit trait with derive, like Fold
  • this will be needed to count how many new variables are being introduced
  • debruijn refactoring (below) could make things easier
  • apply transform
  • 🛠️ Write-up  “recursive solver with priorities” idea and get feedback  (chalk)
  • 🏫 Goal of integrating rustc with the chalk-solve: (rustc/chalk)
  • align chalk’s use of debruijn indices with how rust does it (chalk)
  • remove existing chalk-engine integration from rustc (rustc)
  • “try and see”
  • 🏫 Refactor ty::Predicate in rustc to move it closer to Chalk (rustc):
  • put Predicate into arena so you have Predicate<'tcx>
  • add Predicate::ForAll(Binder<ty::Predicate<'tcx>) variant
  • add Predicate::Implies(…) 
  • consider refactoring Predicate to separate out where-clauses, goals, clauses — right now there is quite some code that matches on “impossible things”, this might also affect Implies 

matthewjasper

  • 🛠️ “always applicable” impl prototypes

jackh726
  • 🏫 Add tracing support (chalk) (claimed)
  • 🏫 Add benchmarks (chalk)
  • 🏫 Add a debug-like option to allow exporting a lowered program and goals into a file that can be read/tested with chalki (in order to make reproducing problems easier). (chalk)