Open CryZe opened 6 years ago
AFAIK there's two major solutions here:
wasm2asm
in Binaryen. The wasm-bindgen repo has an example of this and has a mode for the wasm2es6js
tool which runs wasm2asm
.Neither of these solutions is robust (AFAIK) in the sense that wasm2asm
still has a lot of shortcomings and I'm not sure if there's much progress towards emulating wasm in the browser through JS.
I'd personally see wasm2asm
as the best route forward here, but it'd certainly require a lot more love before we could officially recommend it I think
There's also asmjs-unknown-emscripten
(though obviously that has the overhead of emscripten)
I'll do more concrete benchmark on the JavaScript interpreter inplementation. What would be acceptable performances?
@xtuc It will vary from project to project. Some projects may be fine with a 100x slowdown, others obviously will find that unacceptable.
I should be free to continue work on wasm2asm soon if that would be useful to the community.
Alright, I've dug a bit further into this and this seems to be the current state:
@CryZe I should have mentioned it before sorry. I'm the author of webassemblyjs.
First, could you please open an issue with the crash? Thanks. Currently the interpreter doesn't support the full instruction set and on my few microbenchmarks It's arround 50 times slower than native.
On a side note, is that I'd like to take advantage of asm.js semantics in the interpreter.
binaryen's wasm2js
(ne wasm2asm
) has been getting a lot of love (mostly from @alexcrichton) recently. I think this is what we should recommend going forward.
With that in mind, would anyone like to write a section of the book about making JS fallback work via wasm2js
?
wasm-bindgen
guide, i.e. do you think this is still necessary?wasm-pack
, say, with a flag like --target=bikeshed-old-browser
?
I feel like we should have some reasonable solution for supporting older browsers. So far I haven't really found a good solution so that's why I'm bringing it up here. Also once we have a good solution, we should probably document it.