-
Notifications
You must be signed in to change notification settings - Fork 114
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
ABI Data Schema #584
ABI Data Schema #584
Conversation
* adding program page related ops
* Add Replace * Remove replace auto-import * Use scripts/generate_init.py * Add more tests to replace, substring, and extract (#1) Co-authored-by: Michael Diamant <michaeldiamant@users.noreply.github.com>
* Add Block # Conflicts: # pyteal/ir/ops.py * Disable flake8 errors on formatted lines * Add past version failure check * Remove unnecessary ignore Expr equality context
* Add JsonRef * Use named class methods to specify value type * Remove unnecessary ignore Expr equality context * Fix docstring link
* Add Base64Decode * Remove unnecessary ignore Expr equality context
* Support Secp256r1 curve * Fix type errors in ecdsa tests * Fix typo * Test Secp256k1 curve against TEAL 5 instead * Add compile check to `MultiValue` class * Use `MultiValue` compile checks instead of inheritance
* Add VrfVerify # Conflicts: # pyteal/ast/__init__.py # pyteal/ir/ops.py * Tidy with `MultiValue`’s compile check
* Add first valid time factory and update min version * Include FirstValidTime in txn tests * Add transaction field docs
* add box ops * full support on ops * first set of test, add versioning in multi * remove some seemingly not necessary code? * update testcase * check invalid arguments * finish testcase * move stuffs to app * version check trick * verifyTealVersion apply * error message * update docs structures * period * update doc * update doc * update doc * per pr review on implementation * Update docs/state.rst Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> * Update docs/state.rst Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> * Update docs/state.rst Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> * Update docs/state.rst Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> * Update docs/state.rst Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> * Update docs/state.rst Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> * Update docs/state.rst Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> * Update docs/state.rst Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> * Update docs/state.rst Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> * hex box size goes wild * Update docs/state.rst Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> * warning about MBR * wording * Update docs/state.rst Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> * emphasize * Update docs/state.rst Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> * Update docs/state.rst Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> * polishing * remove redundant box_put doc segment * per zeph pr review * use note and warning * per zeph's pr review * Update docs/state.rst Co-authored-by: Michael Diamant <michaeldiamant@users.noreply.github.com> * creating boxes * Update docs/state.rst Co-authored-by: Michael Diamant <michaeldiamant@users.noreply.github.com> * per pr review * table for state types Co-authored-by: Ben Guidarelli <ben.guidarelli@gmail.com> Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> Co-authored-by: Michael Diamant <michaeldiamant@users.noreply.github.com>
* swapping base64 modes to match the rest (#446) * Merge master into teal7 (#450) * AVM 7: Address integration branch feedback (#452) * Add Execute Method (#444) * adding execute method to allow omission of begin/submit for common use case * exec docstring * update testcase Co-authored-by: Hang Su <hang.su@algorand.com> * Merge branch 'master' into teal7 (#463) * fix misspelling of uint (#431) * fix misspelling of uint * Clarify minimum Python version management docs (#435) * Foreign prefix on App and Asset arrays (#440) * replacing foreignapps with applications * fix assets as well * Add Execute Method (#444) * adding execute method to allow omission of begin/submit for common use case * exec docstring * update testcase Co-authored-by: Hang Su <hang.su@algorand.com> Co-authored-by: Ben Guidarelli <ben.guidarelli@gmail.com> Co-authored-by: Hang Su <hang.su@algorand.com> * Consolidate TEAL and AVM versioning (#441) * fix misspelling of uint (#431) * fix misspelling of uint * Clarify minimum Python version management docs (#435) * Convert TEAL version references to program version by hand * Replace `teal#Options` with `avm#Options` * Deprecate `*_TEAL_VERSION` in favor of `*_PROGRAM_VERSION` * Fix docs typo Co-authored-by: Michael Diamant <michaeldiamant@users.noreply.github.com> * Minor `versions.rst` changes * Fix `verifyTealVersion` in new opcode files * Fix linter errors * Fix language discrepencies introduced by the merge * Remove incorrect avm replacement * Fix inconsistent language introduced by merge Co-authored-by: Ben Guidarelli <ben.guidarelli@gmail.com> Co-authored-by: Michael Diamant <michaeldiamant@users.noreply.github.com> * max program version Co-authored-by: Ben Guidarelli <ben.guidarelli@gmail.com> Co-authored-by: Michael Diamant <michaeldiamant@users.noreply.github.com> Co-authored-by: Jacob Daitzman <jdtzmn@gmail.com>
2a688b2
to
65e4a95
Compare
b74634b
to
7c7aa50
Compare
b2da669
to
d14f04e
Compare
* memory layout structure in frame var and frame related ops * validate type * minor, error msg * testing for memory layout, need test frame var * kwarg/posarg * simpler condition in check frame mem layout args Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> * Better type check in `__getitem__` return var Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com> * vanilla flavored class decl * take away output index * good testcase for succinct repr * better assert for type checking * better error checking in proto, inherit layouts from expr not seq * tie for local type segment invalid none type * take out confusing algorithm * better tie error msg check * super Co-authored-by: Zeph Grunschlag <tzaffi@users.noreply.github.com>
ab34a02
to
0a5b570
Compare
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.
The actual changes seem pretty straightforward, but I do have a few questions about specifics.
By the way, my preference is to first merge this into master, then merge #562 into master, if that makes sense. That way we can keep changesets small.
) | ||
if mem_layout: | ||
if mem_layout.num_return_allocs > num_returns: |
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.
Why is it ok for these to be unequal?
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.
num_return_allocs
are applied for ABI return value, while num_returns
in proto
only matters about how many remaining things on the stack. So not all return on stack are ABI values, num_return_allocs
<= num_returns
.
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 think based on previous discussion we concluded that ABI return values can be placed on the stack. So should the condition here be changed?
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.
if we are fine with return value to be in local variables, then the condition should be fine without changing?
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.
The right thing to do here depends on what happens in #562, so I'm fine with merging this as it is currently and then revisiting.
c44c167
to
bb8f9e5
Compare
5cf0cf5
to
29be7ff
Compare
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.
Looks good, thanks for clarifying and taking suggestions
After discussion with @jasonpaulos in 2022/10/24, we decide to provide a set of data retrieval interface for ABI values, not just scratch slots. This will hopefully decrease (or eliminate) the ABI scratch slot use in subroutine.
Based on #562 for now.#562 is based on this one.