Try interacting with anything that uses u64 and you’ll be a lot less happy!
Anyway JavaScript does have BigInt so technically you are choosing.
that insanity is how C and Intel handle NaN conversions.
It’s not actually quite as bad as the article says. While it’s UB for C, and it can return garbage. The actual x86 conversion instruction will never return garbage. Unfortunately the value it returns is 0x8000… whereas JS apparently wants 0. And it sets a floating point exception flag, so you still need extra instructions to handle it. Probably not many though.
Also in practice on a modern JS engine it won’t actually need to do this operation very often anyway.
Try interacting with anything that uses u64 and you’ll be a lot less happy!
Anyway JavaScript does have BigInt so technically you are choosing.
It’s not actually quite as bad as the article says. While it’s UB for C, and it can return garbage. The actual x86 conversion instruction will never return garbage. Unfortunately the value it returns is 0x8000… whereas JS apparently wants 0. And it sets a floating point exception flag, so you still need extra instructions to handle it. Probably not many though.
Also in practice on a modern JS engine it won’t actually need to do this operation very often anyway.
I’m sorry you had to experience this, but in all my years of development I hadn’t.
0x8000 is garbage. Insane.
It is INT_MIN. Seems like a much more sensible value than 0 IMO.
Obviously, opinions vary here as well