Merged
Conversation
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 adds variable length (different per function) returns for both public and private functions. In private land and non-avm public functions, the macros introduce an oracle call for the simulator to store the returns in the packed values cache (this is not necessary for avm functions since they do return actual values instead of some public inputs). The macros previously serialized the returns to the public inputs, now, the public inputs only contains the hash.
Two new structs, PackedReturns (for private) and FunctionReturns (for public) are used as return values for the context functions that call other external functions. They allow easy casting to other types, and PackedReturns in particular also deals with the fact that in private you get only the hash back from the call.
None of the new oracles are necessary in the AVM context.