In the comparison with Emscripten using wasm-decompile [1], the author appears to have forgotten to turn on optimization. Yes, if you run emcc with no -O option then you will get extremely bad generated code quality, similar to most C compilers. Add -O and you get nice and tight code similar to what c4wa outputs.
It sounded good until this part. Would have been nice if it were written in the subset of C that it supports, so it could compile the compiler to Wasm.
This is actually pretty compelling to me. I think the more support for freestanding wasm modules the better.
I'm working on a custom wasm app runtime and I don't want to have to implement the entire API surface of Emscripten or WASI. The new component model is even more complex. I wish there was more tooling available for using C/Rust stdlib functions for things like reading files or opening a socket, but being able to define your own API to handle the actually operations in the host/module interface.
In the comparison with Emscripten using wasm-decompile [1], the author appears to have forgotten to turn on optimization. Yes, if you run emcc with no -O option then you will get extremely bad generated code quality, similar to most C compilers. Add -O and you get nice and tight code similar to what c4wa outputs.
[1] https://github.com/kign/c4wa/blob/master/etc/doc/comparison....
> c4wa needs Java 11 or above
It sounded good until this part. Would have been nice if it were written in the subset of C that it supports, so it could compile the compiler to Wasm.
clang can compile into wasm pretty well via the
--target=wasm32
option. It creates small binaries. My 16-Bit x86 emulator with BIOS and DOS emulation is under 100kB [0].
[0] https://github.com/s-macke/FSHistory
> here are some of the most commonly used features of C language NOT supported by c4wa. > [...] Almost all new features introduced in C99
At least, it doesn't require K&R syntax for functions!
This is actually pretty compelling to me. I think the more support for freestanding wasm modules the better.
I'm working on a custom wasm app runtime and I don't want to have to implement the entire API surface of Emscripten or WASI. The new component model is even more complex. I wish there was more tooling available for using C/Rust stdlib functions for things like reading files or opening a socket, but being able to define your own API to handle the actually operations in the host/module interface.
Zig can also compile to free standing wasm
any example? I search wasm without js.
I noticed this question yesterday, which includes the changed build options for freestanding.
https://ziggit.dev/t/wasm-index-out-of-bounds-only-in-debug-...
Last commit on Jan 29, 2022