Polonius Working Group
This working group aims to explore the integration of the so-called “Polonius analysis” into rustc. Polonius is effectively an “NLL 2.0”-like project, that aims to achieve two goals:
- improve upon the borrow checker algorithm so that it can accept more rust programs than it currently does;
- move the core logic of the borrow checker into an independent crate whose behavior can be easily tested and specified.
The base Polonius algorithm was first introduced in this blogpost. The Polonius crate has evolved significantly since then in terms of its implementation details and efficiency, and one of the goals of the working group is to extend the scope of the crate to define the full borrow check analysis.
- Team: wg-polonius on rust-lang/team
- Meeting Notes:
- Screencasts: YouTube Playlist
- FAQ: FAQ
How can I get involved?
We are still working on defining our roadmap and carving out independent tasks. If you’d like to get involved, the best idea right now is to introduce yourself in our Zulip stream – and perhaps consider attending on our triage meetings.
- Desired experience level: Any
- Relevant repositories:
rust-lang/rust
(specificallysrc/librustc_mir/borrow_check
),rust-lang/polonius
, andrust-lang/datafrog
- Zulip stream:
#t-compiler/wg-polonius
on Zulip
Are there any resources so I can get up to speed?
nikomatsakis’s blog posts offer the best written documentation at the moment:
- An alias-based formulation of the borrow checker
- Polonius and region errors
- Polonius and the case of the hereditary harrop predicate
Do I need to attend any meetings?
We have a weekly sync meeting. Check the compiler team meeting calendar for the most up to date time. Attendance is not mandatory but recommended as this can be a good opportunity to ask any questions and find new issues to work on.