Lazy finalization of cycle participants in maybe_changed_after
#854
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
I'm not entirely sure if we should make this change but it does feel closer to how cycles work in
execute
. On the other hand,deep_verify_memo
now works fairly different for cycles than it does for other queries.This PR removes the loop from
deep_verify_memo
. We used the loop to iterate a second time if all dependencies in a cycle remain unchanged. I don't think this is strictly necessary because we can rely on Salsa lazily verifying the inner queries when they're pulled as part of another query (they won't run into a cycle again because it's already verified).We may want to introduce a new event, e..g
DidProvisionallyValidateMemoizedValue
(open to suggestions) to make it more apparent that the dependencies were verified, they simply were never "finalized"I still need to update the comment but I'm interested in what people think first.
Performance
The performance on ty is about the same as the old version