Skip to content

Scalable Polonius support on nightly #118

Open
@nikomatsakis

Description

@nikomatsakis
Metadata
Point of contact @lqd
Team(s) types
Goal document 2025h1/Polonius

Summary

Keep working on implementing a native rustc version of the Polonius next generation borrow checking algorithm, that would scale better than the previous datalog implementation, continuing from the 2024h2 goal.

Tasks and status

  • Design review (@nikomatsakis)
  • Factoring out higher-ranked concerns from the main path (@amandasystems)
    • rewrite invalid universe constraints with outlives 'static constraints — PR #123720
    • completely remove placeholders — in progress, PR #130227
  • Replace parts of the borrow checker with location-insensitive Polonius
  • Location-sensitive prototype on nightly (@lqd)
    • create structures for location-dependent outlives constraints
    • build new constraint graph from typeck constraints and liveness constraints
    • update NLLs for required changes to local & region liveness, loan liveness & loan scopes, (possibly unreachable) kills, bidirectional traversal & active loans
    • land on nightly — PRs #134268, #134315, #134378, #134670, #134914, #134920, #134980 and #135290.
  • Debugging / dump tool for analysis of location-sensitive analysis (@lqd), PRs #136031, #136104 and #136278
  • Tests and validation of location-sensitive Polonius (@lqd) — in progress
    • limit regressions about diagnostics when using the new constraints on diagnostics tailored to the old constraints — PR #136299
    • make the full test suite pass — in progress
    • do a crater run for assertions and backwards-compatibility
    • expand test suite with tests about the new capabilities
  • Location-sensitive pass on nightly, tested on CI (@lqd)
  • Standard reviews (types Team): thanks to @jackh726 and @matthewjasper for the many reviews.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions