Talk about WASI
I really apreciate you're referencing work !
I'm really interested in the most recent developements of webassembly, and I'm surprised you don't talk about WASI.
Wasi is a standard developed by bytealliance to be able to execute any wasm module outside the browser, by a runtime or by importing functions from another language.
There are some languages/compilers in the list that compile to webassembly, but doesn't implement this interface. As a result, you have to import some functions that are not at all standardized to run this assembly, so you must use javascript glue for I/O for example. They can't run outside the browser !!!
For example that is the case with emscripten: it implements non-standard functions, so you can't run it without javascript.
I think rust, c, cpp and go are the only languages that compile to this interface. You can look here
So it would be nice to present all the languages in a table, indicating if they compile to this standard or not.
Zig has always had excellent support for WASI, too.
I haven't had the time to maintain this repo as I'm no longer actively following the WebAssembly scene. I don't mind PRs that help with this.
I haven't had the time to maintain this repo as I'm no longer actively following the WebAssembly scene. I don't mind PRs that help with this.
This is no longer true. I will look into this
I see this and https://github.com/appcypher/awesome-wasm-langs/issues/61 maybe being solved using some kind of tags (or symbols + legend) for the implementations, describing whether they are:
- An interpreter runtime compiled to mostly freestanding Wasm (optionally + supporting host code)
- An interpreter runtime compiled to WASI-compatible Wasm
- A compiler emitting freestanding Wasm (optionally + supporting host code)
- A compiler emitting WASI-compatible Wasm
- A hybrid setup where the interpreter/compiler runtime is compiled to Wasm and itself emits Wasm (like WAForth for instance)
I think that would make it easier to parse at a glance whether a language implementation is suitable for a particular use case.