WebAssembly implies a model with no syscalls. WASI provides a basic set of POSIX like syscalls which is used by the various standard libraries when the compilation target is wasm32-wasi.
So C, C++, Rust code using their respective standard libraries compiled to wasm32-wasi can run on Deno out of the box.
> Just to clarify my understanding, none of this is free though, right? If I understand correctly, every WASI will have to be maintained to achieve and preserve feature parity as new features are added to the language or, in the worst case, a breaking change is introduced.
WASI is versioned by namespace, which is just a prefix for the modules; so v1 and v2 of WASI may in theory actually have nothing in common so the runtime needs to support that particular version of the interface.
e.g; a module compiled today with only the MVP WebAssembly features targeting wasi_snapshot_preview1 (the current version) today should continue to run just fine as long as the runtime doesn't drop support for that version of WASI.
Features in WebAssembly itself do not necessarily require a rewrite, at-least in the current specification but it depends what happens going forward.
> This may be a naive question, but this is also only for server-side code, right? Would you be making these kinds of syscalls in code you deploy to the client? Forgive me, I'm not entirely up to speed on webasm.
Browsers too; e.g a browser game or app can use standard library i/o which calls into WASI; altho my web-wasi implementation is not up to par at the moment as I'm waiting for the outcome of a proposal Emscripten's kripken put out on how to deal with async/await in browsers.
* Maya, Cinema4D: Blender is technically pretty good, UX is improving but still clunky. Even something like Silo would be pretty sweet (a fairly simple, pure 3d modeling program)
* Video editing: Is there really anything good out there? Last I tried the programs just straight out crashed.
There is a type-checker in the works tho https://stc.dudy.dev/docs/status/