--- tags: polonius, historical --- # Polonius Sprint Aug 3 - Aug 5 ## Goals ### Move errors * [ ] rustc does not emit the errors that polonius reports * [ ] partial initialization behavior [rust-lang/polonius#152] * [ ] slow on clap (1-2min) * [ ] possible spurior error https://github.com/rust-lang/rust/issues/70797 ### Lifetime analysis * [x] open question of whether to track subset relations or equality [rust-lang/polonius#107] * resolved: track subset relations for now ### Lifetime placeholder errors * [ ] no fast, location insensitive pre-pass ([prototype polonius branch](https://github.com/lqd/borrow-check/commits/subset_errors_are_back_with_a_vengeance) adding those to both the location-insensitive and optimized variants) * [x] settle placeholder rules vs rules about subset relations between regions * resolved: subset relations * [ ] some cases, often related to closures/HRTB, where polonius behavior and chalk integration doesn't match ### Fact generation * [ ] `Location::All` is causing OOM errors * lqd has a prototyped fix ([polonius branch](https://github.com/lqd/borrow-check/tree/fix_oom/), [rustc branch](https://github.com/rust-lang/rust/compare/master...lqd:fix_oom)) that generates a dedicated relation rather than reproducing the `outlives` constraints for all locations, but it moves OOMs from rustc's fact generation to polonius' move errors computation and requires investigation * also will require duplication of some datafrog rules under current setup (like [here](https://github.com/lqd/borrow-check/blob/fix_oom/polonius-engine/src/output/location_insensitive.rs#L37-L47) and [here](https://github.com/lqd/borrow-check/commit/0d3f6b815860b6a448d287120cee95a2b33a689e)) ### Documentation and code quality * [ ] rename rules in the code to match the [polonius rules] nomenclature * [ ] complete [polonius rules] and move them into the [polonius book] -- [rust-lang/polonius#141] * [ ] generate a skill-tree to guide our overall development * [ ] land [rust-lang/polonius#126]? [polonius rules]: https://hackmd.io/CGMNjt1hR_qYtsR9hgdGmw [rust-lang/polonius#152]: https://github.com/rust-lang/polonius/issues/152 [polonius book]: https://rust-lang.github.io/polonius [rust-lang/polonius#126]: https://github.com/rust-lang/polonius/pull/126 [rust-lang/polonius#141]: https://github.com/rust-lang/polonius/issues/141 [rust-lang/polonius#107]: https://github.com/rust-lang/polonius/issues/107 ## Others * [x] Updating the [report](https://hackmd.io/CjYB0fs4Q9CweyeTdKWyEg?view#42-closuresclosure-expected-typeexpect-region-supply-region-2rs-%E2%80%94-outputs-from-NLL-Polonius) of the compare-mode rustc tests with the current state of testing * updated: one new infinite loop/OOM in move errors on [this test](https://github.com/rust-lang/rust/blob/master/src/test/ui/issues/issue-74564-if-expr-stack-overflow.rs) * [ ] Cleaning up the fact generation part * [ ] Should Polonius handle "this move is illegal" in addition to "this access is illegal due to a move?"