logoalt Hacker News

tristenharrtoday at 7:14 PM0 repliesview on HN

Technically the Rust codegen is from the AST, but then we want to base our other backends on the bytecode VM, although that experiment might get lifted back to the AST, I just am trying to think of the best portable format. We have a treewalker, then I wrote a register based bytecode VM, then from there we did a copy-patch JIT with stencils that can hot-tier to native, and that was the interpreter side, our compiler we have a 40+ pass AOT optimizing supercompiler for Logos to Rust codegen and then we added the C backend, but then I started thinking… if I make it so I can run the optimizer passes then it goes into the VM’s bytecode IR, I could get my optimization passes on all the backends I add for free by generating the code from the IR, so I’ve been experimenting with having our rust codegen from the AST, and the C codegens from the bytecode IR which has the passes applied because they share the core optimization primitives.

It’s a fun experiment but I might go back to the C codegen from the AST as it maintains more useful information that I can use comp-time for more optimizations, but the idea of modular languages and compiler backends interests me. Languages can have “bespoke” front ends quite literally, pick your flavor because really a lot of the flavor can be handled at the parser, and you can have a big nasty language surface area if the parser can clean things up or AOT some of the sugar away. Interesting the idea of sugar in language design as well, we can sprinkle sugar in ways we couldn’t before at all. I just added a bunch of ML primitives for our new CUDA-JIT backend that lets us lower quantized INT8 GEMM’s onto spatial compute fabrics.

Man it’s a crazy time to be alive, I’m not sure how long this period of history will last, but building with an army of agents is amazing.

Last night I for the first time in a while decided to write a little program by hand and after about 30 minutes I had it working but the AI can spit that out in seconds. I admit I’m rusty, that would’ve taken me 5-10 mins at the peak of my degenerate coder phase but the amount you can accomplish now is unparalleled throughout history. When I used to trad code transpilers sometimes single lines would take hours of thinking and work and many lines of iteration to get to. Now I can add an entire new chip architecture as a compile target in a couple weeks.