Skip to content

feat: Variable length returns#5633

Merged
sirasistant merged 22 commits intomasterfrom
arv/variable_length_returns_clean
Apr 10, 2024
Merged

feat: Variable length returns#5633
sirasistant merged 22 commits intomasterfrom
arv/variable_length_returns_clean

Conversation

@sirasistant
Copy link
Copy Markdown
Contributor

@sirasistant sirasistant commented Apr 9, 2024

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.

Loading
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants