Cuik is a modern C compiler, the idea is to be significantly smaller without compromising on flexibility, errors or compile speed. Unlike standard compilers it can compile multiple files in parallel within the same process along with link by itself (on windows for now). It's not complete but every day it gets closer to self-hosting and eventually working as my daily driver.
Here it is parsing a small amount of GLSL
TB is a custom backend made to combat issues with other popular backend options (LLVM, libgccjit). We focus on being both simple and very capable, the design allows for trivial parallel compilation and integrated linking.
TB uses sea-of-nodes which is an IR style similar to SSA (immutable values representing
data flow) but instead of representing control flow via a separate graph where instructions/values
are placed, certain nodes propagate control flow and it acts as any other form of data would. This
way we abstract away a lot of scheduling details from the IR and leave clearer room for the code
generator. A simple example is that sea of nodes doesn't require the IR to perform loop invariant code
motion (moving operations outside of a loop if they don't change per iteration) because values simply
"would not" exist in the loop. The point of type systems and IRs is to expose logical truths which
we can optimize around or share with users and this style is in my opinion most suited for TB.
The red edges represent control flow, nodes which imply ordering will depend on whatever must happen before them in a more intuitive style than basic blocks where certain operations don't have a strict ordering.
TB also contains a nearly complete PE linker, it's missing the ability to emit debug info but other than that can link EXEs from COFF files. The linker is highly parallel, relying heavily on a fast non-blocking hash map design derived from Cliff Click's work.
This is a hobby OS I started with a small group, the design follows a microkernel
and currently it's able to boot into userland and run simple services to handle USB via
XHCI and graphics via custom drivers for Intel iGPUs. I've done a bit of work on using the GPU to accelerate the display composition. At
the moment that means I can display cursor sprites using an Intel iGPU's display planes.
Here's a video of it booting on real Dell Optiplex hardware and using the iGPU to draw a simple purple sprite
Disclaimer: As this is a group project, I'd like to highlight that while I played a significant role in developing this OS, not all code in this project has been written by me.