Posted in reply to Kenneth Dallmann
On Monday, 13 September 2021 at 16:19:31 UTC, Kenneth Dallmann wrote:
> Rumor has it that D can compile to Wasm, but only in the "BetterC"
True. Or alternatively, you probably can do it by simply not using the unported DRuntime parts, and defining a few stub functions for those runtime calls that remain in the binary anyway.
> LLVM can compile to Wasm, but unfortunately it may not support
> systems IO calls because of the lack of operating system access.
You're supposed to create the system hooks for WASM yourself, or use a library for doing that. https://code.dlang.org/packages/spasm should be your first stop when using D. I think WASM is designed so you can run code unprivileged code in it, as opposed to asm.js which always has full access to it's environment.
> Emscripten is a compiler that can transform C into something that
> can run on Wasm without holes in the Standard Library. It does
> this by simulating an operating system, which adds overhead to the
> runtime, but allows a full range of C to be used, to my understanding.
You can compile D to asm.js using the Emscripten backend, and then call the C API. No need for a C transpilation. However, I prefer WASM myself. It does not require a massive framework like Emscripten, and also it felt less buggy. And you can use Spasm with it.