c4wa – C compiler for Web Assembly

(github.com)

59 points | by 90s_dev 4 days ago ago

9 comments

  • comex 7 hours ago

    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....

  • lioeters 7 hours ago

    > 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.

  • s-macke 3 hours ago

    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

  • teo_zero 3 hours ago

    > 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!

  • apitman 6 hours ago

    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.

  • pyrolistical 6 hours ago

    Zig can also compile to free standing wasm

  • Anduia 4 hours ago

    Last commit on Jan 29, 2022