---
# System prepended metadata

title: Polonius Sprint Aug 3 - Aug 5
tags: [polonius, ' historical']

---

---
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?"