-
Notifications
You must be signed in to change notification settings - Fork 13
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
Merge dependencies #13
Conversation
* Rename elem/data.drop * Reorder bulk instructions * Rename interpreter AST ref constructors to match reftype repo * Update interpreter README
… op proposal (#35) Adds table.size, table.grow, table.fill to overview, spec, interpreter, and tests, as decided at recent CG meeting. Also adds a few more tests for table.get and table.set. Also, change interpreter's segment encoding to match bulk ops proposal, addressing #18. (Not updated in spec yet, since corresponding spec text is still missing from bulk ops proposal.)
Fixes issue #77.
The data count section has a count that must match the number of data segments. If the data count section isn't present, then `memory.init` and `data.drop` cannot be used. Fixes issue #73.
* Add definition of free index sets * Simplify datacount side condition * Explain convention about multiple occurrences of meta variables
The element segment binary format allows for `ref.null` as well as `ref.func`. TODO: text format
* Make types explicit in global/table/memory instances * Allow global/table values/elements to be subtypes * Simplify externval typing
* Remove passive segment func ref shorthand * Drop passive keyword
* Fix expected trap messages. The spec interpreter says "element segment dropped", rather than "elements segment dropped". * Fix "zero len, but dst offset out of bounds" test. Fix this test to test what it's comment says it's testing. * Add more tests for zero-length operations. * Update the Overview text to reflect the zero-length at-the-end semantics.
Deploy keys can't be shared between repositories, so we'll have to create a new one for each proposal. We may want to switch to the instructions described here instead at some point: https://docs.travis-ci.com/user/deployment/pages/
Whether tail calls across module boundaries would guarantee tail call behavior was previously an open question, but @thibaudmichaud confirmed that they would guarantee tail call behavior in V8 in WebAssembly/tail-call#15 (comment).
Wow, this was painful... All the vector stuff.
Describe correct tail call behavior across modules
Merge upstream
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
I am assuming that this PR does not include the hybrid iso-recursive type proposal. |
Right, recursive types are currently with the GC proposal, which is not needed here. Including the dependencies has been our standard practice for proposal repos. Once a dependency is merged into the upstream spec, a sync will make the dependency obsolete. |
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 am ok (somewhat reluctantly TBH) to let this go through.
Some (most) of my comments have no real bearing on stack switching so there is not much point in elaborating them here.
and heap_type = | ||
FuncHeapType | ExternHeapType | DefHeapType of var | BotHeapType | ||
and value_type = | ||
NumType of num_type | VecType of vec_type | RefType of ref_type | BotType |
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.
What is a BotType?
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 bottom type. It only occurs internally.
|
||
* Refine the instruction `ref.func $f` to return a typed function reference | ||
|
||
* Optionally add an instruction `func.bind` to create a closure |
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 was under the impression that func.bind was not happening.
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.
Yes, but I yet have to update the overview.
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.
Thanks.
and heap_type = | ||
FuncHeapType | ExternHeapType | DefHeapType of var | BotHeapType | ||
and value_type = | ||
NumType of num_type | VecType of vec_type | RefType of ref_type | BotType |
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 bottom type. It only occurs internally.
|
||
* Refine the instruction `ref.func $f` to return a typed function reference | ||
|
||
* Optionally add an instruction `func.bind` to create a closure |
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.
Yes, but I yet have to update the overview.
Merge with WebAssembly/spec and WebAssembly/gc
The proposal currently depends on typed function references and typeful references in general. In addition, various examples require tail calls. This PR hence merges in both proposal repos as dependencies, as a prerequisite for merging the interpreter prototype in a follow-up.