-
Notifications
You must be signed in to change notification settings - Fork 73
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Compute subset errors everywhere #156
Merged
lqd
merged 15 commits into
rust-lang:master
from
lqd:subset_errors_are_back_with_a_vengeance
Jul 30, 2021
Merged
Compute subset errors everywhere #156
lqd
merged 15 commits into
rust-lang:master
from
lqd:subset_errors_are_back_with_a_vengeance
Jul 30, 2021
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This was referenced Dec 22, 2020
Working on documenting the
I'll take care of both of these later, just to make my life easier until we have decided how to tackle #157, but I've used the correct names in the documentation PR. |
lqd
force-pushed
the
subset_errors_are_back_with_a_vengeance
branch
2 times, most recently
from
April 28, 2021 21:29
ffe39d2
to
ffd02f8
Compare
lqd
force-pushed
the
subset_errors_are_back_with_a_vengeance
branch
2 times, most recently
from
June 3, 2021 21:33
7886bb1
to
2b1d580
Compare
nikomatsakis
approved these changes
Jul 30, 2021
r=me with nit |
- make the location-insensitive variant compute potential subset errors using placeholder loans - record those potential errors in the context for the Opt variant to make use of in the context of the Hybrid analysis
all 3 types of errors should always be the same between the naive and opt variants
This will help readability, and documentation, when we extract the rules to the book. Also describes more precisely why we need a duplicate liveness relation.
Since we're already computing the full subset TC, adding a check for placeholder origins at the same time is simpler, and as a bonus, barely noticeable performance-wise (therefore, faster than tracking the placeholder subsets).
According to our finalized rules hackmd
lqd
force-pushed
the
subset_errors_are_back_with_a_vengeance
branch
from
July 30, 2021 16:10
2b1d580
to
cbe4512
Compare
lqd
force-pushed
the
subset_errors_are_back_with_a_vengeance
branch
from
July 30, 2021 16:12
cbe4512
to
594c7df
Compare
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This PR implements what we discussed last sprint:
Opt
variant compute subset errors, tracking the subsets of placeholder origins, because placeholder loans don't work in this situationNaive
variant compute subset errors using the "easy subset-filtering" because we compute the full subset transitive closure hereLocationInsensitive
variant: placeholder loans are very natural in this variant, as we don't compute subsets at allLocationInsensitive
variant, we can re-enable it as a pre-pass in theHybrid
variant: if no potential illegal access errors nor potential illegal subset relations errors are detected, there's no need to run the full analysis.I've also started to number and document the rules, as preparation for putting them in the book (and extracting them as soufflé .dl files if need be). This can be seen in the
Naive
variant (commit 321c23e, before the computation was simplified), and if that's interesting I'll apply it to the other variants (though theOpt
rules are already more documented than the 2 others).As the last bit of renaming, it also aligns the relation name and input fact files of the
known_subset
s to what the finalized rules look like in our hackmd (nowknown_placeholder_subset
s). The commits starting with "tests" are the ones renaming input files and can be glossed over/ignored.