-
Notifications
You must be signed in to change notification settings - Fork 126
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
feat: yul lagrange basis evaluation #442
Conversation
abc1139
to
1ecc3c1
Compare
pure | ||
returns (uint256 result0) | ||
{ | ||
// solhint-disable-next-line no-inline-assembly |
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.
perhaps you want to add this to your solhint: "no-inline-assembly": "off",
to avoid repeatedly using // solhint-disable-next-line rule
assembly { | ||
// IMPORT-YUL ../base/LagrangeBasisEvaluation.sol:compute_truncated_lagrange_basis_sum | ||
// solhint-disable-next-line no-empty-blocks | ||
function compute_truncated_lagrange_basis_sum(length, point, num_vars, modulus) -> result {} |
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.
this line isn't needed right?
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.
Correct. It's needed for the sake of the linter, so it knows what the function signature is.
is there anyway to run target test without blitzer?
|
Try this:
|
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.
I verified that the new Rust and Yul implementations do the exact same computation. It will be really great if we can add more docs to the Yul Preprocessor though.
1ecc3c1
to
4414c11
Compare
4414c11
to
ce07269
Compare
🎉 This PR is included in version 0.64.1 🎉 The release is available on GitHub release Your semantic-release bot 📦🚀 |
Rationale for this change
In order to port the verifier to Solidity, we need to write some code in Yul.
What changes are included in this PR?
Simplified the existing Rust lagrange basis evaluation.
Added a YUL port.
Added some tooling around YUL code.
Are these changes tested?
Yes