May 17, 2026
Compile me maybe
Jank now has its own custom IR
Jank aims for the big leagues, and the comments are equal parts hype and side-eye
TLDR: jank added a custom internal layer to make its code faster, with the ambitious goal of eventually challenging Java’s performance. Commenters were impressed but instantly split between hype, caution about losing live-edit flexibility, and the classic “why build this yourself?” debate.
A small programming language project just made a big, swaggering move: jank now has its own custom “middle layer” for compiling code, which basically means its creator is building a smarter in-between step so jank can squeeze out more speed and try to rival Java’s famously fast engine. That alone was enough to wake up the comment section, where the mood was a mix of “let’s go!” and “whoa, slow down there.” The loudest reaction came from people fixating on that bold promise to compete with the JVM, the system behind Java. One commenter practically gave a respectful gasp, calling it a very high bar and reminding everyone that the JVM is no joke.
Then came the classic internet split: the curious nerds, the cautious realists, and the drive-by skeptics. One reader politely rolled up with the “can you explain this like I’m five, but still with runtime calls?” energy, clearly intrigued but not fully sold on how this magic speed-up will work. Another raised a more philosophical bit of drama: if jank starts baking functions directly into other functions for speed, does that mess with the live-editing, tinkering-at-the-keyboard culture people love? In other words, faster code vs. flexible coding — the oldest tech soap opera in the book. And of course, there was the inevitable spicy question from the back row: “Why not just use MLIR?” Translation: why build your own custom machine room when there’s already fancy machinery on the market? The result is delicious comment-thread tension: admiration, nitpicking, and just enough chaos to make this compiler update feel like a real main-character moment.
Key Points
- •Jeaye Wilkerson announced that jank now has a custom intermediate representation and is using it to improve optimization.
- •The article explains that intermediate representations help with portability, optimization, and matching compiler abstractions to language semantics.
- •jank previously relied on LLVM-generated C++ or LLVM IR, but LLVM IR was described as too low-level to model many Clojure-specific semantics effectively.
- •The new IR is designed specifically around Clojure semantics, including features such as vars, transients, persistent data structures, and lazy sequences.
- •A reference for the IR has been added to the jank book, and the IR is implemented as C++ data structures that can be rendered into Clojure data for debugging and testing.