jankが独自IRを手に入れた話:Clojure風言語を本気で速くするための土台づくり
jank が 独自の custom IR(中間表現) を導入した これまでの LLVM IR では、Clojure 的な意味をうまく表せず最適化しづらかった 新しい IR は Clojure の semantics に寄せた高レベル設計 で、最適化の余地を増やす狙いがある IR は SSA形式 と CFG(制御フローグラフ) で表現され、解析しやすい まずは recursive fibonacci をベンチマークに、jank を JVM 版 Clojure に近づける作戦 この記事時点ではまだ最適化パスは本格稼働していないが、土台は整った Clojure系の言語を作っている jank が、自前の IR(Intermediate Representation / 中間表現) を持つようになった、というのがこの記事の主題です。 IRというのは、ざっくり言うと「ソースコードをそのまま機械語にする前に、一度コンパイラが扱いやすい形に変換したもの」です。 ちょっと難しく聞こえますが、要するに 翻訳の途中にある“整理された下書き” み
papoo.work