La base de codi Ruby adopta el nou compilador JIT ZJIT

Un nou compilador JIT, ZJIT, s'ha afegit a la base de codi d'implementació de referència del llenguatge Ruby i es posiciona com la propera generació de Ruby JIT. ZJIT s'inclourà a la propera versió principal de Ruby 3.5, on estarà disponible com a opció juntament amb el compilador YJIT JIT, i podria substituir-lo a Ruby 3.6. Igual que YJIT, el nou compilador JIT està escrit en Rust. Tots dos compiladors JIT van ser creats per un equip de desenvolupadors de Shopify com a part d'una iniciativa per millorar el rendiment dels programes Ruby que utilitzen el framework Rails i criden molts mètodes.

A diferència d'YJIT, el nou compilador JIT no tradueix el bytecode de la màquina virtual YARV en una representació intermèdia de baix nivell (essencialment gairebé directament a codi màquina), sinó que transforma el bytecode en una representació intermèdia d'alt nivell SSA (Static Single Assignment), sobre la qual es poden implementar fases d'optimització addicionals i es pot realitzar l'optimització tenint en compte grans blocs de codi, en lloc de confiar només en les operacions actuals.

ZJIT realitza la compilació de tot un mètode alhora, mentre que YJIT només podria gestionar la compilació de blocs bàsics. Per a la creació de perfils de tipus, ZJIT implementa una arquitectura JIT clàssica que utilitza les dades històriques de tipus acumulades per l'intèrpret en lloc de la tècnica Lazy Basic Block Versioning (LBBV) que s'utilitza a YJIT.

L'ús d'un IR d'alt nivell resoldrà els problemes d'escalabilitat que té YJIT, establirà les bases per a la futura implementació de la compilació JIT multinivell, permetrà optimitzacions avançades (com ara un desplegament en línia més agressiu) i facilitarà l'adaptació del JIT a diferents plataformes. Tornar a un model tradicional de perfils de tipus eliminarà la complexitat del codi i permetrà que nous col·laboradors hi participin (l'ús de LBBV per part de YJIT va fer que el projecte fos desconegut per a altres col·laboradors i que només el desenvolupessin els empleats de Shopify).

Font: opennet.ru

Afegeix comentari