The Wasmer team, who build a WebAssembly runtime, post about running WebAssembly outside the browser, with benchmarks, releases and demos.
HN commenters link it for Wasmer announcements such as wapm and the Postgres extension, and one is impressed by its performance, noting its LLVM backend.
Awesome! I had heard of wasmer before, but I didn't realize its performance was that good yet. I'll definitely be paying closer attention to this space now.
Although, on closer inspection it seems like wasmer is using LLVM as a backend to get that good performance, which tempers my enthusiasm a little bit. I see that wasmer also supports the Cranelift backend, but the promised performance blog post[1] doesn't seem to have been published yet, so I don't know how much of a difference that makes in the real world.
A ~13x difference in JIT compile time (LLVM vs Cranelift) is huge, and waiting on LLVM itself to compile can also be... exciting. LLVM does good work for AOT compilation, but I don't know how I feel about the trade-offs of using it as a JIT. If a massive C++ code base is going to be pulled in anyways, I would almost rather them pull in V8 than LLVM... but that's just my opinion, since V8 seems to be very well optimized for the JIT use case.
But, I'm glad there is the choice to use Cranelift (and presumably exclude LLVM from the final binary) if that fits a particular use case, and I'm excited to see that follow-up blog post whenever the wasmer team has time to publish it.
[1]: https://medium.com/wasmer/wasmer-1-0-3f86ca18c043
Other than some fantasy consoles like WASM-4, which have some retro-inspired limitations, there isn't really a standard way to do any kind of GUI in Wasm yet. Wasmer has a non-standard way[1], which they hide behind compilation flags, and involves writing to a bitmap framebuffer, so no hardware acceleration.
[1]: https://medium.com/wasmer/wasmer-io-devices-announcement-6f2a6fe23081
WebGPU is only in web browsers and WASM runs everywhere. There should be a standard cross-platform API for WASM GUI apps. Framebuffer is the lowest common denominator and <canvas> may be its implementation in web browsers. See also: https://medium.com/wasmer/wasmer-io-devices-announcement-6f2a6fe23081
I think I remember reading something on HN about some kind of tool for running WASM in some kind of kernel module to speed up app performance.
EDIT: here it is: https://medium.com/wasmer/running-webassembly-on-the-kernel-8e04761f1d8e
This exists, but with limitations: [0][1]
[0]https://medium.com/wasmer/announcing-the-first-postgres-extension-to-run-webassembly-561af2cfcb1
[1]https://github.com/wasmerio/wasmer-postgres
Hi HN!
We have also published an article to showcase wapm:
https://medium.com/wasmer/announcing-wapm-the-webassembly-package-manager-18d52fae0eea
Would love to hear your thoughts!