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.
Description of changes:
This change adds an initial c2rust script for experimentation. Currently, all of the main C files transpile to Rust without warnings, except for 2:
The
bin
andtests
directory still needs to be considered and fixed as well.Testing:
Assuming
docker
is installed, transpiling the code simply requires running./scripts/s2n2rust/run.sh
. If everything goes correctly, you'll get acargo
project atscripts/s2n2rust/target/s2n-tls
.The emitted rust code is pretty decent. We still need to apply refactoring and analysis to the output to improve it further (which is the main area of research here). Here's a few samples of what it looks like today:
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.