El compilador de Clojure 'jank' ha implementado su propia representación intermedia (IR) personalizada, diseñada específicamente para optimizar el código a nivel de semántica del lenguaje Clojure. Anteriormente, jank delegaba toda la optimización a LLVM, pero debido a que LLVM IR opera a un nivel muy bajo sin conocimiento de las estructuras de datos persistentes, vars o secuencias lazy de Clojure, las oportunidades de optimización eran limitadas. La nueva IR, desarrollada durante seis semanas, trabaja a un nivel significativamente más alto que el bytecode de la JVM o el IR de LLVM, permitiendo optimizaciones más efectivas. La representación es SSA (single static assignment) y se estructura como un grafo de flujo de control (CFG). El desarrollador agradece a sus patrocinadores en GitHub y a Clojurists Together, pero continúa buscando financiamiento para trabajar tiempo completo en el proyecto.
Jank crea IR personalizada para optimizar código Clojure
Fuentes:
jank now has its own custom IR
