> Be welcome to the exciting world of graphical C applications using SDL (Simple DirectMedia Layer). SDL, originally developed by Sam Lantinga in 1998...
Looks interesting and fun, but in no instance of any C compiler I've come across is the "classic example" of "hello, world" using `fprintf(stderr, ...)`
The source for the site is here: https://github.com/dyne/cjit/tree/main/docs. It's a VitePress site with a custom theme. Glancing through the code, I don't see any obvious signs of LLM coding. It also definitely wasn't created with Codex specifically, because according to the commit history, the first version of the site was in late 2024, months before Codex even released.
I’m not surprised by it, but I am confused as I do not see anything that reminds me of TempleOS, HolyC, or Davis. If anything, this is just pushing the tcc —run functionality one step further.
Agreed, how HolyC serves as an inspiration could be clarified. Was it an aspect of HolyC? The background/context of the author's life, meaning Terry Davis was inspirational? Impossible to tell. Other resources [0] [1] don't mention this aspect.
> What's different between tcc -run and CJIT?
>The main difference is in usability.
> CJIT improves three main UX aspects for now:
> It works as a single executable file which embeds the TinyCC compiler, all its headers and its standard library. This way there is no need to install anything system wide, check paths and setup build folders.
> It supports adding multiple files into one execution: can accept wildcards to ingest anything that is a C source, a pre-compiled object or a shared library. The symbols exported by each file will be visible to all during the same execution.
> It finds automatically common system libraries for each target platform, avoiding the need to repeat these settings and look for the right paths.
I wonder whether CJiT can compile itself a-la GCC and LLVM.
FAQs don't mention this and maybe the next weekend I will try to boot cjit with cjit itself.
25 comments
[ 2.8 ms ] story [ 46.8 ms ] thread> Be welcome to the exciting world of graphical C applications using SDL (Simple DirectMedia Layer). SDL, originally developed by Sam Lantinga in 1998...
That's batteries included.
To each their own I guess.
But on a serious matter, it's a good thing to tell a beginner that diagnostics belong on stderr, not stdout.
main( ) { printf("hello, world"); }
Show HN: CJIT, a single-binary C compiler that can self host - https://news.ycombinator.com/item?id=47751458 - April 2026 (1 comment)
C, Just in Time - https://news.ycombinator.com/item?id=42246209 - Nov 2024 (7 comments)
(Pity the Show HN didn't get attention - we'll email the author)
Definitely was not expecting this reference.
https://en.wikipedia.org/wiki/TempleOS#HolyC
https://en.wikipedia.org/wiki/Terry_A._Davis
Agreed, how HolyC serves as an inspiration could be clarified. Was it an aspect of HolyC? The background/context of the author's life, meaning Terry Davis was inspirational? Impossible to tell. Other resources [0] [1] don't mention this aspect.
[0] https://www.theregister.com/2024/11/16/rusthaters_unite_filc...
[1] https://github.com/pizlonator/fil-c/blob/deluge/README.md
I was wondering why the release explicitly is `cjit-x86_64-ubuntu-24.04` instead of generic linux, but it does in fact appear to not work on Arch:
`tcc: error: file '/lib/x86_64-linux-gnu/libgcc_s.so.1' not found`
I'm guessing that's due to a `dlopen` since it's not listed by `ldd`
The TUI demos work great, but I couldn't get the SDL examples to resolve all the missing symbols after trying for a bit.
It has all the tools for custom JIT including a nice C compiler.
> CJIT uses TinyCC to compile C quickly, often in memory, and can execute the resulting code immediately.
Wait, what's the difference between this and just using tinycc directly?
Happy to be proven wrong here, since the project has been around for a couple years. It doesn't appear to just be a random AI one-shot thing....in what way? o.O
> CJIT improves three main UX aspects for now:
> It works as a single executable file which embeds the TinyCC compiler, all its headers and its standard library. This way there is no need to install anything system wide, check paths and setup build folders.
> It supports adding multiple files into one execution: can accept wildcards to ingest anything that is a C source, a pre-compiled object or a shared library. The symbols exported by each file will be visible to all during the same execution.
> It finds automatically common system libraries for each target platform, avoiding the need to repeat these settings and look for the right paths.