You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Keep variable-write markers out of loop convergence decisions
The markers made consecutive convergence-pass scopes compare unequal, so
loops sometimes took extra passes or skipped pass replays - and the extra
generalization could change inferred types, accidentally masking engine
bugs (the array_shift-in-while case converged to better types than the
engine without tracking produces). Convergence termination and pass-replay
gates now use equalsIgnoringVariableWriteMarkers(), making analysis
results independent of the tracking again.
Replaying a recorded pass can now settle on an entry scope no pass was
walked with, so the frame records which names the body reads and the
replay sites reconcile first: every read name's writes reaching the
settled entry count as read, keeping back-edge reads correct in
type-stable loops.
The array_shift NSRT test temporarily pins the engine's actual (wrong)
non-empty-list behaviour; the proper convergence fix on 2.2.x flips it.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01CbZPnVnRJDLbnqmtD3sYSy
0 commit comments