現在、ジャंक社には独自のカスタム赤外線(IR)プロトコルが用意されています。
## 日本語訳:
The Jank team has unveiled a custom intermediate representation (IR) specifically designed for Clojure semantics, operating at a higher level than both LLVM IR and JVM bytecode to optimize performance. Through approximately six weeks of design and implementation—including reworking C++ code generation—the team achieved a compilation speed significantly faster than standard JVM code. The optimization journey involved several key technical breakthroughs: adding inline support for vars removed interning and reduced boxing; refactoring `jank_nil` improved pointer handling; eliminating extraneous instructions for boolean values lowered instruction counts; implementing tagged pointers allowed 63-bit integers to be stored inline without dynamic allocation; and applying aggressive C++ attributes enabled direct inlining of arithmetic functions. These iterative optimizations slashed the execution time for a `fibonacci 35` benchmark on an AMD Ryzen Threadripper from a baseline of 5,522ms down to just 114ms. Despite these performance gains—nearly twice as fast as OpenJDK 21—and the use of C++ under the hood, Jank maintains essential developer-friendly traits: it remains dynamically typed, utilizes garbage collection, and supports polymorphism. Future work includes revisiting complex benchmarks like a ray tracer and implementing further optimization passes for the upcoming beta release, proving that dynamic languages can outperform the JVM without sacrificing core language features or productivity.
## 日本語訳:
Jank チームは、Clojure のセマンティクスに特化して設計されたカスタム中间表現(IR)を発表しました。この IR は LLVM IR および JVM ビュードより上位のレベルで動作し、パフォーマンス最適化を実現します。6 週間程度の設計と実装プロセス—including C++ コード生成の見直し—を通じて、チームは標準的な JVM コードよりも著しく高速なコンパイル速度を達成しました。この最適化の旅路にはいくつかの重要な技術的突破口が関わっています:vars へのインラインサポート追加によりインターニングが削除されボックス化が削減されました;`jank_nil` の再設計によってポインタ処理が改善されました;ブール値のための余分な指令の排除により指令数が減少しました;タグ付きポインタの実装により 63 ビット整数を動的割り当てなしでインラインに格納することが可能となりました;そして積極的な C++ アトリビュートの適用により算術関数の直接インライン化が実現されました。これらの反復的优化は、AMD Ryzen Threadripper 上で動作する `fibonacci 35` ベンチマークの実行時間を、基準となる 5,522ms からわずか 114ms に削減しました。これらのパフォーマンス向上——OpenJDK 21 のほぼ 2 倍の速度——と C++ の下層利用にもかかわらず、Jank は本質的な開発者フレンドリーな特性を維持しています:それは依然として動的型付けを持ち、ガベージコレクションを利用し、多態性をサポートします。今後の作業には、レイトレースなどの複雑なベンチマークの見直しと、次のベータリリースに向けたさらなる最適化パスの実装が含まれ、これが動的言語がコア言語機能や生産性を損なうことなく JVM を凌ぐことができることを証明します。