|
| 1 | +# Polonius Working Group |
| 2 | +![working group status: active][status] |
| 3 | + |
| 4 | +This working group aims to explore the integration of the so-called |
| 5 | +["Polonius analysis"][P] into rustc. Polonius is effectively an "NLL |
| 6 | +2.0"-like project, that aims to achieve two goals: |
| 7 | + |
| 8 | +- improve upon the borrow checker algorithm so that it can accept more rust programs |
| 9 | + than it currently does; |
| 10 | +- move the core logic of the borrow checker into an independent crate whose behavior |
| 11 | + can be easily tested and specified. |
| 12 | + |
| 13 | +The base Polonius algorithm was first introduced in [this |
| 14 | +blogpost][intro]. The [Polonius crate][P] has evolved significantly |
| 15 | +since then in terms of its implementation details and efficiency, and |
| 16 | +one of the goals of the working group is to extend the scope of the |
| 17 | +crate to define the full borrow check analysis. |
| 18 | + |
| 19 | +- **Leads:** [@nikomatsakis][nikomatsakis] |
| 20 | +- **Meeting Notes:** [All](NOTES.md) |
| 21 | + |
| 22 | +[status]: https://img.shields.io/badge/status-active-brightgreen.svg?style=for-the-badge |
| 23 | + |
| 24 | +# How can I get involved? |
| 25 | + |
| 26 | +We are still working on defining our roadmap and carving out |
| 27 | +independent tasks. If you'd like to get involved, the best idea right |
| 28 | +now is to introduce yourself in our Zulip stream -- and perhaps |
| 29 | +consider attending on our triage meetings. |
| 30 | + |
| 31 | +- **Desired experience level:** Any |
| 32 | +- **Relevant repositories:** [`rust-lang/rust`][repo] (specifically `src/librustc_mir/borrow_check`), [`rust-lang/polonius`][P], and [`rust-lang/datafrog`][DF] |
| 33 | +- **Zulip stream:** [`#t-compiler/wg-polonius`][zulip] on Zulip |
| 34 | + |
| 35 | +[repo]: https://github.com/rust-lang/rust |
| 36 | +[DF]: https://github.com/rust-lang/datafrog |
| 37 | +[zulip]: https://rust-lang.zulipchat.com/#narrow/stream/186049-t-compiler.2Fwg-polonius |
| 38 | +[P]: https://github.com/rust-lang/polonius |
| 39 | +[intro]: http://smallcultfollowing.com/babysteps/blog/2018/04/27/an-alias-based-formulation-of-the-borrow-checker/ |
| 40 | +[regionbp]: http://smallcultfollowing.com/babysteps/blog/2019/01/17/polonius-and-region-errors/ |
| 41 | +[regionhr]: http://smallcultfollowing.com/babysteps/blog/2019/01/21/hereditary-harrop-region-constraints/ |
| 42 | + |
| 43 | +## Are there any resources so I can get up to speed? |
| 44 | + |
| 45 | +nikomatsakis's blog posts offer the best written documentation at the moment: |
| 46 | + |
| 47 | +- [An alias-based formulation of the borrow checker][intro] |
| 48 | +- [Polonius and region errors][regionbp] |
| 49 | +- [Polonius and the case of the hereditary harrop predicate][regionhr] |
| 50 | + |
| 51 | +## Do I need to attend any meetings? |
| 52 | + |
| 53 | +We have a weekly sync meeting. Check the [compiler team meeting |
| 54 | +calendar](../README.md#meeting-calendar) for the most up to date |
| 55 | +time. Attendance is not mandatory but recommended as this can be a |
| 56 | +good opportunity to ask any questions and find new issues to work on. |
| 57 | + |
| 58 | +[nikomatsakis]: https://github.com/nikomatsakis |
| 59 | +[pnkfelix]: https://github.com/pnkfelix |
0 commit comments