After revisiting this design choice in #247, this PR changes the Canonical ABI to not force canonicalization of NaNs, so that hosts can just use the raw f32/f64 bit-patterns. Because some languages and host implementation techniques (especially JS, both as host and as guest) will inevitably end up doing some amount of NaN-canonicalization, this PR explicitly includes this allowed non-determinism in the Canonical ABI lifting and lowering routines.
After revisiting this design choice in #247, this PR changes the Canonical ABI to not force canonicalization of NaNs, so that hosts can just use the raw
f32
/f64
bit-patterns. Because some languages and host implementation techniques (especially JS, both as host and as guest) will inevitably end up doing some amount of NaN-canonicalization, this PR explicitly includes this allowed non-determinism in the Canonical ABI lifting and lowering routines.