Comments (12)
spec repo gives a clearer error (for nan:0x7ff8000000000000):
test6.wast:2.41-2.63: constant out of range: nan payload must not overlap with exponent bits
basically, nan:0x<hexdigits>
should only be the nan tag of the float, not its entire bit pattern.
from wabt.
Hmm, that's a problem: it's unspecified by IEEE-754 what the NaN encoding means. Encoding the payload makes more sense honestly, but then how do we encode the sign?
We could just fix binaryen, but I'd like us to figure out how exactly.
from wabt.
When looking at parsing these it did occur that it would be convenient and clear in some contexts to be able to just specify the raw bits. Is there a good reason this is not allowed. For example, change nan:... to raw:... or bits:...
from wabt.
Hexadecimal floating-point is the way to go for this... except for NaNs.
from wabt.
@jfbastien -nan:0xbeef
works too. See https://github.com/WebAssembly/sexpr-wasm-prototype/blob/master/test/parse/expr/const.txt#L23.
from wabt.
Right, what I mean is that the hexadecimal floating-point specification handles all values precisely, but NaNs aren't a value and they're not handled by hexfloat.
from wabt.
A producer might not even want to mess with hexfloat, just reliably emit the raw bit, and could do so using the same method as for nan:... It would not seem to complicate the consumer, perhaps even avoid a few tests.
from wabt.
@JSStats discussed here: WebAssembly/design#292
from wabt.
To address one specific detail here: IEEE 754 defines unary negation as a purely bitwise operation with behavior defined even on NaNs: it just sets the sign bit. Consequently, it's reasonably consistent to use -nan...
for NaNs with the sign bit set.
from wabt.
@sunfishcode ooh cute! I like :)
from wabt.
from wabt.
I'll call this bug fixed by the binaryen PR.
from wabt.
Related Issues (20)
- wasm-decompile: Assertion `is_name()' failed. HOT 1
- wasm-interp errors on seemingly semantically-correct wasm module HOT 1
- Sharing memory between the host and a WebAssembly module HOT 7
- Out-of-Bound Memory Read in DataSegment::IsValidRange()
- Out-of-Bound Memory Write in DataSegment::Drop()
- wasm-stats: support markov chain style listings HOT 7
- Memory allocation error in ReadBinaryInterp() cause DoS
- wasm-decompile: Assertion `!empty()' failure cause DoS
- wasm-decompile: Assertion `exp_stack.size() >= nagrs' failure cause DoS
- Invalid basic_string_view::substr:__pos() number cause DoS HOT 2
- [Feature/Binary Request] List Exported functions only HOT 11
- wasm-decompile: Assertion `false' failed. HOT 1
- wasm2c does nothing at all HOT 4
- wasm2c: Optionally support #embed HOT 7
- wasm2c: Split size and capacity
- Unexpected token "null" with WasmGC example HOT 1
- Need Help | wat2wasm: "error: unexpected token" HOT 5
- wasm2c is multiple times slower on Apple ARM processors (M3) than x86-64 HOT 2
- `wast2json` fails to parse `if.wast` from latest testsuite HOT 4
- Plan for GC and beyond HOT 9
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from wabt.