This, however, elicited a response from a Mozilla employee claiming it wasn’t telling “the whole story.”
Does anyone know what the differences in perspective are here?
[1]: https://www.reddit.com/r/rust/comments/cx4nj3/comment/eykkie...
First things first: we have the deepest appreciation for Jack and the people behind the effort at lightbeam. They did a lot of amazing work on that space that inspired our work in the Singlepass compiler (similar design principles as lightbeam).
On that sense, Wasmer is built to support any kind of compiler backend. We currently support Singlepass (streaming compiler), Cranelift and LLVM (for super optimal environments). [1] We also support ARM [2] chipsets and sponsored the work on the dynasm Rust project to enable it.
Wasmer runtime is also highly pluggable via middlewares. For example, we added ultra-optimal "gas metering" as a part of it.
If you are curious about runtime speed (tldr: we are ahead ;) ), here are some other articles [3] [4]
Hope this is useful!
[0]: https://github.com/wasmerio/wasmer
[1]: https://medium.com/wasmer/a-webassembly-compiler-tale-9ef37a...
[2]: https://medium.com/wasmer/running-webassembly-on-arm-7d365ed...
[3]: https://00f.net/2019/10/22/updated-webassembly-benchmark/
[4]: https://medium.com/@leonardas103/experimenting-with-webassem...
I understand that streaming compilation wants to start compiling before the entire module has been read, but is it really that important to start compiling functions before their entire definition has been read? Seems like a huge artificial hurdle.