4 ms·
CJIT: C, Just in Time
- wavemode 5mo ago> inspired by HolyC by Terry Davis ...in what way? o.O
- mightyham 5mo agoFor the uninitiated who didn't watch Terry's streams, HolyC is both an AOT and JIT language, but the JIT was in some ways much more rudimentary and in some ways much more powerful than a typical JIT compiler. Like this CJIT project, it basically could dynamically link and compile source code, spit the assembly into memory and proceed to immediately execute it. In fact, the system shell was literally JIT compiled HolyC. Which also meant you can do fun things like call kernel functions directly from the command line.
- uticus 5mo agohttps://dyne.org/cjit/graphics.html#cjit-for-graphical-applications https://dyne.org/cjit/graphics.html#cjit-for-graphical-appli... > 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.
- apitman 5mo agoIt links to the system SDL, on Linux at least.
- michaelcampbell 5mo agoLooks 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, ...)` To each their own I guess.
- apitman 5mo agoGive io buffering an inch and it will take a mile
- 1718627440 5mo agoI give you `if (0 > fdprintf (STDERR_FILENO, ...))` instead. But on a serious matter, it's a good thing to tell a beginner that diagnostics belong on stderr, not stdout.
- NetMageSCW 5mo agoThe real classic is from The C Programming Language (where I saw it) and is: main( ) { printf("hello, world"); }
- dang 5mo agoRelated: Show HN: CJIT, a single-binary C compiler that can self host - https://news.ycombinator.com/item?id=47751458 https://news.ycombinator.com/item?id=47751458 - April 2026 (1 comment) C, Just in Time - https://news.ycombinator.com/item?id=42246209 https://news.ycombinator.com/item?id=42246209 - Nov 2024 (7 comments) (Pity the Show HN didn't get attention - we'll email the author)
- jaromilrojo 5mo agohi! matter of timing I guess, development isn't stopping :^) a friend just prompted me to look at unx - fun to see if it all works with cjit
- deleted 5mo ago[deleted]
- gosukiwi 5mo agoDid you use Codex 5.4 for the web design? :p I think Codex tends to do very similar designs, could be completely mistaken tho
- zamadatix 5mo agoLooks like a generic static site generator page to me. I'd be surprised if dyne folks used a closed system like Codex specifically.
- ethmarks 5mo agoThe source for the site is here: https://github.com/dyne/cjit/tree/main/docs 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.
- grebc 5mo agoSweet project! I will give this a go today :)
- omoikane 5mo ago> inspired by HolyC by Terry Davis Definitely was not expecting this reference. https://en.wikipedia.org/wiki/TempleOS#HolyC https://en.wikipedia.org/wiki/TempleOS#HolyC https://en.wikipedia.org/wiki/Terry_A._Davis https://en.wikipedia.org/wiki/Terry_A._Davis
- BirAdam 5mo agoI’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.
- jovial_cavalier 5mo agoprobably because the shell on TempleOS is actually a HolyC REPL, and HolyC is JIT compiled.
- uticus 5mo ago> Definitely was not expecting this reference. 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/ https://www.theregister.com/2024/11/16/rusthaters_unite_filc... [1] https://github.com/pizlonator/fil-c/blob/deluge/README.md https://github.com/pizlonator/fil-c/blob/deluge/README.md
- theogravity 5mo agoThe site visually feels "compressed" due to the font used? It's a bit jarring. The tutorial link in the header nav doesn't go anywhere.
- michaelcampbell 5mo agoIt goes to https://dyne.org/cjit/tutorial.html https://dyne.org/cjit/tutorial.html for me, and very much works as I would expect it to (chromium engine browser, MacOS)
- apitman 5mo agoCool idea. 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.
- taylorallred 5mo agoPair this with Fil-C(https://fil-c.org/ https://fil-c.org/) and now you have C but as a truly bonafide scripting language.
- simonask 5mo agoWhich sounds a lot like the worst of all worlds.
- whatever120 5mo agoParty pooper.
- cindyllm 5mo ago[dead]
- rtpg 5mo agoThe world-class script munging capabilities and rapid prototyping capabilities of C, combined with the durable performance of your favorite scripting language. A match made in heaven for operational scripts
- jsLavaGoat 5mo agoInspired by Terry. But does it glow?
- nutjob2 5mo agoMuch more interesting is Mir: https://github.com/vnmakarov/mir https://github.com/vnmakarov/mir It has all the tools for custom JIT including a nice C compiler.
- fuhsnn 5mo agorcc[1] is another real-JIT C compiler. antcc[2] and xcc[3] are worth mentioning for being fast-enough to run C like scripting. [1] https://github.com/dstogov/rcc https://github.com/dstogov/rcc [2] https://codeberg.org/lsof/antcc https://codeberg.org/lsof/antcc [3] https://github.com/tyfkda/xcc https://github.com/tyfkda/xcc
- slopinthebag 5mo ago> CJIT is not a tracing or adaptive JIT in the VM sense. It does not interpret first and optimize hot paths later. > 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? cat program.c | tcc -run - 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.
- zamadatix 5mo agoYou may be disappointed by the FAQ then https://dyne.org/cjit/faq.html https://dyne.org/cjit/faq.html (other than it really isn't an AI thing).
- adgjlsfhk1 5mo agoJulia uses a model similar to this. The main advantage is that you can interact much more easily if you have a REPL running where you can do things (assign variables load data etc) and then define/try out new code on that data.
- pjmlp 5mo agoThis model traces back to Lisp and how BASIC was originally designed at Dartmouth (the pure interpreter approach was a solution to fit it into 8 bit home computers). The best tooling approach is a mix of interpreter, dynamic and ahead of time compilers, it is a pity that not all toolchains provide this.
- tnelsond4 5mo ago> 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.
- notorandit 5mo agoI 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.
- zoobab 5mo agoYou should release a static version of it.