Single standalone file, no external tools used, PATH='' (empty), portable (bash, dash, ksh, zsh), produces x86 ELF executables, has mini-libc builtin.
Usage:
printf 'int main(){puts("hello");return 0;}' | sh c89cc.sh > hello
chmod +x hello
./hello
angry_octet•1h ago
I can't think of a reason to use c89cc.sh, but I salute this effort nonetheless.
dmitrygr•1h ago
Many parts of this are clearly autogenerated, but that in no way diminishes the sickening impressiveness of it!
phire•44m ago
It does make it a little hard to understand how the parser/ast_builder works.
But the rest seems easy enough to understand.
userbinator•41m ago
It would be far more interesting to look at what this was "compiled" from; it looks like the output of a state-machine generator.
kelsey98765431•1h ago
Would be a lot better if it came with tests. Please do this justice and dont let it rot as a gist, make a real repo and add some docs and at least smoke tests or some kind. Thanks
jey•46m ago
It targets x86-64/ELF? I thought it would target `sh` to be portable?
gaigalas•1d ago
Usage:
printf 'int main(){puts("hello");return 0;}' | sh c89cc.sh > hello
chmod +x hello
./hello
angry_octet•1h ago