Chalk 2019-08-30 notes
- fuel https://github.com/rust-lang/chalk/pull/227
- 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
- integrating dyn and impl Trait https://github.com/rust-lang/chalk/issues/218
- 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