Rust's Borrow Checker Gets a Faster, More Flexible Rewrite
An alias-based formulation of the borrow checker (2018)
In a personal blog post, Niko Matsakis, a core Rust developer, describes an experimental reformulation of the borrow checker based on regions as sets of loans rather than program points. The new analysis, implemented in Datalog and differential-dataflow, passes the full NLL test suite and handles cases the current checker cannot, such as issue #47680. While performance is currently slower, Matsakis is optimistic about optimization. The proposal is invisible to end-users but could influence future language features.
The biggest shift in this new approach is that when you have a type like &'a i32, the meaning of 'a changes: it corresponds to a set of loans rather than some portion of the source program.