Why rustc's GVN Refuses to Merge Two Borrows: Provenance as a Type
GVN in rustc gives every borrow a unique provenance marker whose hash and equality implementations panic, so the compiler cannot accidentally merge two pointers.
GVN in rustc gives every borrow a unique provenance marker whose hash and equality implementations panic, so the compiler cannot accidentally merge two pointers.
rustc’s next-gen trait solver never constructs error messages while solving; it records a proof tree and replays it later, with caches bypassed, to find the real cause of a …
rustc’s next-gen trait solver normally decrements its recursion budget by one, but after an overflow it divides the budget by four, so the solver terminates almost immediately …
The new trait solver’s PathKind lattice (Inductive < Unknown < Coinductive) is joined with a max-like operation, so a cycle’s kind is recomputed compositionally on every stack …
Two-phase borrows split a mutable borrow into reservation and activation; rustc finds the activation syntactically and answers ‘is it active?’ with O(1) dominator queries instead …