Daninet / hash-wasm

Lightning fast hash functions using hand-tuned WebAssembly binaries
https://npmjs.com/package/hash-wasm
Other
894 stars 50 forks source link

Blake3 support on Safari browsers? #27

Closed gojomo closed 3 years ago

gojomo commented 3 years ago

Attempting to run the blake3 benchmark at https://daninet.github.io/hash-wasm-benchmark/ in MacOS Safari (Version 14.1 (15611.1.21.161.7, 15611)) or iOS Safari (iOS14.7.1), the page just hangs - even though other hashes (like blake2s or sha256) work OK.

In the MacOS Safari JS console, an exception is shown:

[Error] Unhandled Promise Rejection: ReferenceError: Can't find variable: BigUint64Array dispatchException (blake3.worker.4ef17eb3fe4e063beb9a.worker.js:2:37383) (anonymous function) (blake3.worker.4ef17eb3fe4e063beb9a.worker.js:2:33595) e (blake3.worker.4ef17eb3fe4e063beb9a.worker.js:2:2050) I (blake3.worker.4ef17eb3fe4e063beb9a.worker.js:2:2298) promiseReactionJob

Is this a 'fixable' or 'wait for Apple to fix Safari' kind of issue?

Daninet commented 3 years ago

That's weird, I didn't use BigUint64Array in 'hash-wasm'. Does it come from "blake3 2.1.4", the other library from the blake3 benchmark?

Daninet commented 3 years ago

You can try it here: https://3w4be.csb.app/ Source code: https://codesandbox.io/s/hash-wasm-3w4be?file=/src/App.tsx If this page calculates BLAKE3, hash-wasm should be fine.

gojomo commented 3 years ago

Thanks for the rapid attention!

The alternate page works (up to a point, see below) - so yes, the problem is likely in the other library included for comparison.

So really, this is an issue with that other library and the benchmark page - and for that page it'd be nice if the working hash-wasm benchmarks would still be obtainable even in cases where the comparison libraries are malfunctioning. (As it happens, I came across this while touting hash-wasm's relative blake3 vs sha256 performance, not caring at all about its performance versus other libraries. So an easy option or error handler for skipping the blake3-2.1.4 code entirely would be a full remedy for the lack of results I saw.)

FYI regarding the alt page: after entering a few different short strings, maybe 30 characters total, it manages to crash the Safari page, with a "This webpage was reloaded because a problem occurred" message. Definitely a separate issue, not a real concern for any use, just mentioning the (reliably-reproduceable) anomaly.

Daninet commented 3 years ago

Thank you. Yeah, it would probably worth adding an error handler over there. I will try to do that when I have some free time. https://github.com/Daninet/hash-wasm-benchmark/issues/7

entering a few different short strings, maybe 30 characters total, it manages to crash the Safari page Wow, that's weird... I've never seen that in Chrome / Firefox. I created a separate issue for that (https://github.com/Daninet/hash-wasm/issues/28) and I'm closing this one.