Chalk 2019-08-30 notes
  • need good examples 
  • there aren’t that many places in the engine code that have arbitrary loops
  • cycle handling for sure
  • floundering?
  • pursue-next-strand:
  • loop:
  • pursue strands
  • if no more strands...
  • remove possibility of negative cycles
  • caching — how to extend salsa and do better than “uncached reads”
  • dyn-and-impl-trait still a blocker
  • soundness issue around coinduction must be addressed

goals we could pursue:

  • debugging improvement
  • extend chalk with the option to serialize its environment into a .chalk file and a 
  • remove support for unselected projections
  • remove possibility of negative cycles
  • would simplify the logic to remove delaying
  • we’ll need something like delays to address coinduction soundness
  • remove possibility of cycles — as a form of fuel
  • presently the only case for cycles comes from cycle handling
  • we could add a fuel parameter as well
  • fix coinductive unsoundness
  • create a benchmark for improving performance
  • PR looks .. reasonably right?
  • we need to extend the “lowering” code to create program clauses
  • refactor chalk traits, notably impls_for_trait callback
  • make ?T: Trait always non-enumerable to help address “chalk hangs”

on rust-analyzer side:

  • appears to be eager normalization, not lazy
  • universe integration — I see some FIXMEs