Conversation
| if is_nan x then | ||
| let payload = Rep.logand (abs x) (Rep.lognot bare_nan) in | ||
| "nan:0x" ^ Rep.to_hex_string payload | ||
| "nan:0x" ^ group_digits is_hex_digit 4 (Rep.to_hex_string payload) |
There was a problem hiding this comment.
Just to double-check my understanding, this grouping of the hex digits is just to be consistent with the output format for hex binary numbers as well, correct?
There was a problem hiding this comment.
Yes, and it was more or less an oversight that the pretty printer didn't already group them before.
| ( assert_malformed <module> <failure> ) ;; assert module cannot be decoded with given failure string | ||
| ( assert_invalid <module> <failure> ) ;; assert module is invalid with given failure string | ||
| ( assert_unlinkable <module> <failure> ) ;; assert module fails to link | ||
| ( assert_trap <module> <failure> ) ;; assert module traps on instantiation |
There was a problem hiding this comment.
I also noticed that assert_trap is overloaded for both modules and actions, as it tripped me up here too. Maybe something to address in the future.
| This grammar removes meta commands, textual and quoted modules. | ||
| All numbers are in hex notation. | ||
|
|
||
| Moreover, float values are required to be precise, that is, they may not contain bits that would lead to rounding. |
| cmd: | ||
| <module> ;; define, validate, and initialize module | ||
| ( register <string> <name>? ) ;; register module for imports | ||
| module with given failure string |
There was a problem hiding this comment.
Are you referring to the register command being included? That is needed for tests involving multiple modules.
There was a problem hiding this comment.
I think he means line 373, "module with given failure string". It seems out of place.
There was a problem hiding this comment.
Oh, I see, sorry for being blind. Fixed.
* Upgrade to latest Sphinx release (2.4.4) (#1171) Fixes #1157 * Support 4GB of memory both in initial and max. * [interpreter] Strictify and specify .bin.wast format (#1173) * Merge nontrapping-float-to-int proposal into spec (#1143) See the non-trapping-float-to-int-conversions proposal here: https://github.com/WebAssembly/nontrapping-float-to-int-conversions * Merge sign-extension-ops proposal into spec (#1144) See the sign-extension-ops proposal here: https://github.com/WebAssembly/sign-extension-ops This PR is built on top of #1143 (merge nontrapping-float-to-int). * Merge multi-value proposal into spec (#1145) See the multi-value proposal here: https://github.com/WebAssembly/multi-value This PR is built on top of the following PRs: * #1143 (merge nontrapping-float-to-int) * #1144 (merge sign-extension-ops) * [interpreter] Remove junk in README * [interpreter] Remove junk in README * [spec] Fix grammar for fractions (#1178) * [spec] Add missing i64.extend32_s syntax (#1179) * [js-api][web-api] Fix some markup errors. * Add a README to the proposals directory. * Add more address overflow tests (#1188) There are already tests for effective address overflow, but those have a large value baked into the offset. These tests all use `1` as the immediate offset, and use `-1` for the address on the stack, which may be compiled differently. * Add a test for non-treelike behavior of stack (#961) We've recently found a bug in a WebAssembly library we've been working with where we're mapping WebAssembly to a tree-like IR internally. The way we parse into this representation, however, has a bug when the function isn't itself tree-like but rather exibits properties that exploit a stack machine. For example this isn't so straightforward to represent in a tree-like fashion: (import "" "a" (func $foo)) (import "" "b" (func $foo (result i32))) (func (result i32) call $b call $b call $a i32.xor) The extra `call $a` in the middle is valid `WebAssembly` but needs special treatment when converting to a more tree-like IR format. I figured it'd be good to ensure there's a spec test covering this case as we currently pass the suite of spec tests but still contain this bug! * [js-api] Various editorial improvements. * [js-api] Replace pseudo-ASCII characters by normal ones. This also required disambiguating the references to "module", as there are now two definitions by that name. * [js-api] Improve prose in 'run a host function'. * [js-api] Improve some of the multi-value prose. * Synchronize js-api tests. * Add script to synchronize js-api tests. Co-authored-by: Ng Zhi An <ngzhian@gmail.com> Co-authored-by: Alon Zakai <azakai@google.com> Co-authored-by: Ben Smith <binji@chromium.org> Co-authored-by: Ms2ger <Ms2ger@igalia.com> Co-authored-by: Alex Crichton <alex@alexcrichton.com>
Add a specification of the subset grammar produced by binary (.bin.wast) conversion. In particular, this grammar excludes meta commands, textual or quoted modules, and non-hex or imprecise values.
Accordingly, change interpreter to produce hex floats and numbers in binary output mode and omit quoted modules.