-
Notifications
You must be signed in to change notification settings - Fork 92
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
Refactor stubbing so Kani compiler only invoke rustc once per crate #3245
Merged
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
1. Change KaniCompiler to only run rustc once. 2. Move harness grouping to new codegen_units module. 3. Iterate over the codegen units. Verification of code without stubbing now works. Next step is to move the transformation to the new framework.
Still missing some validation and foreign function support
Need to adjust tests
jaisnan
approved these changes
Jun 10, 2024
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thank you :D ! It's a big refactor but the regressions passing gives me enough confidence to approve the change. I would like to see some examples related to the refactor added to the description if possible, to make why this was necessary a bit more clear.
feliperodri
approved these changes
Jun 10, 2024
tests/script-based-pre/stubbing_compiler_sessions/check_compiler_sessions.expected
Show resolved
Hide resolved
Co-authored-by: Felipe R. Monteiro <rms.felipe@gmail.com>
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.
Using stubs or function contracts as part of the
verify-std
sub-command does not work with multiple rustc executions as previous implementation. This happens because we now enable verifying dependencies, and cargo crashes due to a race condition. As soon as the first rustc invocation succeeds, cargo starts the compilation of the dependents crate. However, new executions can override files.Instead, we moved the stub logic to the new transformation framework, which is done on the top of the StableMIR body, and doesn't affect the Rust compiler session. We are now able to apply stub without restarting the compiler. This is a much better user experience as well, since multiple calls to the compiler can print the same warnings multiple times.
Resolves #3072
Towards #3152
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 and MIT licenses.