-
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
feat(docs): asm
functions
#1061
Conversation
… make it more streamlined
Co-authored-by: Anton Trunov <anton@ton.org>
I agree that this is confusing, and I think that the cause is that we are mixing two mental models: a stack (low-level) and tuples (high-level). We should pick only one and stick with it the entire explanation. It seems that describing everything in terms of tuples is more intuitive, but then we should not mention the stack (or mention how tuples are pushed and popped from a stack in a separate subsection, and only in that section mention the stack). So, for example, I would start the examples saying something about the TVM instructions, something like this: " Then, explaining the meaning of a declaration like:
amounts to saying simply: " |
@jeshecdom interesting note. The cases with multiple instructions should be covered too. And tuples on TON are denoted with square brackets @anton-trunov wdyt about #1061 (comment)? |
this is incorrect in a very specific technical sense: a tuple is a TVM data structure that occupy precisely one TVM stack position but can contain multiple other TVM primitives, including tuples the term you probably intended to use is tensor |
I find it confusing |
@novusnota just adapt the corresponding calling convention description from tvm.pdf |
@novusnota you also need to check how structures that are returned from a function are actually encoded |
To fully finish this section, #910 needs to be resolved too |
I meant mathematical tuple, but now I see that this would introduce much more confusion because of the technical terms in TVM. So, the explanation should stick with the stack and use the technical terms in TVM. |
Yeah, we should stick with the stack explanation and use the technical terms in TVM, because I see everyone is confused now :). But the way, a question: In a function like this:
Does Tact know that after executing those instructions, there will be exactly 5 results in the stack? |
not in the current implementation
nope (the consequence of the previous answer) This should be documented, of course, but an even more important question is "are returned structs actually represented as tensors (multiple TVM values)?" |
and, of course, the symmetrical question for input function parameters (including passing structs) |
|
I'll probably rebase and squash later
All done here, @anton-trunov @jeshecdom. I'll move to finilizing #1064 and then to other things |
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.
Partially reviewed
…light Once our link checking plugin updates to the Starlight v0.30.0+ and Astro v5+ we'll work through the breaking changes (the simple `@astrojs/upgrade` will do)
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.
LGTM, let's merge this PR and request more edits with separate doc issues. @jeshecdom if you find anything that's worth further clarification please open new issues with docs.tact-lang.org
tag
Rewrote the method ID collisions section to remove all logical jumps and make it much more streamlined :)
Also adjusted the structure a little towards the upcoming PR revamping this page. I'll push the draft of it right after we deal with asm functions here.
P.S.: I actually call argument to return position mappings "arrangements" and not "shuffle" as in
grammar.ohm
, because the latter kinda implies randomness, while those are actually deterministic. Hence, "asm arrangments".Issue
asm
functions #1011.tact-docs
)Also, resolved two teeny tiny issues from
tact-docs
— virtually 3-5 lines of fixes for each, no need in a separate CHANGELOG entry:fromSlice
#1092Checklist