La base de código de Ruby adopta el nuevo compilador JIT ZJIT

Se ha agregado un nuevo compilador JIT, ZJIT, al código base de implementación de referencia del lenguaje Ruby y se posiciona como la próxima generación de Ruby JIT. ZJIT se incluirá en la próxima versión principal de Ruby 3.5, donde estará disponible como una opción junto con el compilador JIT YJIT, y puede reemplazarlo en Ruby 3.6. Al igual que YJIT, el nuevo compilador JIT está escrito en Rust. Ambos compiladores JIT fueron creados por un equipo de desarrolladores de Shopify como parte de una iniciativa para mejorar el rendimiento de los programas Ruby que utilizan el marco Rails y llaman a muchos métodos.

A diferencia de YJIT, el nuevo compilador JIT no traduce el código de bytes de la máquina virtual YARV en una representación intermedia de bajo nivel (esencialmente, casi directamente en código de máquina), sino que transforma el código de bytes en una representación intermedia de alto nivel SSA (asignación única estática), sobre la que se pueden implementar fases de optimización adicionales y se puede realizar una optimización teniendo en cuenta grandes bloques de código, en lugar de confiar solo en las operaciones actuales.

ZJIT realiza la compilación de un método completo a la vez, mientras que YJIT solo puede manejar la compilación de bloques básicos. Para la creación de perfiles de tipo, ZJIT implementa una arquitectura JIT clásica que utiliza los datos de tipo históricos acumulados del intérprete en lugar de la técnica de control de versiones de bloque básico diferido (LBBV) utilizada en YJIT.

El uso de un IR de alto nivel resolverá los problemas de escalabilidad que tiene YJIT, sentará las bases para la futura implementación de la compilación JIT de múltiples niveles, permitirá optimizaciones avanzadas (como una implementación en línea más agresiva) y facilitará la adaptación del JIT a diferentes plataformas. Volver a un modelo de creación de perfiles de tipo tradicional eliminará la complejidad del código y permitirá que participen nuevos colaboradores (el uso de LBBV por parte de YJIT dio como resultado que el proyecto fuera desconocido para otros colaboradores y fuera desarrollado solo por empleados de Shopify).

Fuente: opennet.ru

Añadir un comentario