JIT compiler áĄáá áş ZJIT ááᯠRuby ááŹááŹá ááŹá¸ áááşáá˝ážááşá¸áĄááąáŹááşáĄáááşááąáŹáşáážáŻ codebase áá˝ááş áááˇáşáá˝ááşá¸ááŹá¸ááźáŽá¸ Ruby JIT á ááąáŹááşááťááŻá¸áááşáĄááźá áş ááąááŹáá°ááŹá¸áááşá ZJIT áááş YJIT JIT compiler áážááˇáşáĄáá° áá˝áąá¸ááťááşáážáŻáĄááźá áş Ruby 3.5 á ááąáŹááşáá˝ááşáážááážáŻáá˝ááş ááŤáááşáááşááźá áşááźáŽá¸ áááşá¸ááᯠRuby 3.6 áá˝ááş áĄá áŹá¸áááŻá¸áááŻááşááŤáááşá YJIT áá˛áˇáááŻáˇáááş JIT compiler áĄáá áşááᯠRust ááźááˇáş ááąá¸ááŹá¸ááŹá¸áááşá JIT compilers áážá áşááŻááŻáśá¸ááᯠRails framework áááŻááŻáśá¸á áááşá¸áááşá¸ááťáŹá¸á á˝áŹáááŻááąáŤáşáááŻááąáŹ Ruby ááááŻááááşááťáŹá¸á á á˝ááşá¸ááąáŹááşáááşááᯠááźážááˇáşáááşáááş áĄá ááťááŻá¸áážáŻáá áşá áááşáá áşáááŻááşá¸áĄááźá áş Shopify áážá developer áĄáá˝á˛áˇáá áşáá˝á˛áˇááž áááşááŽá¸áá˛áˇááźááşá¸ááźá áşáááşá
YJIT áážááˇáşááá°áᲠJIT compiler áĄáá áşáááş YARV virtual machine bytecode ááᯠlow-level intermediate áááŻááşá áŹá¸ááźáŻáážáŻ (áĄááááĄáŹá¸ááźááˇáş machine code áĄááźá áşáááŻáˇ áááŻááşáááŻááşááŽá¸ááŤá¸) áááŻáˇ ááŹááŹááźááşááźááşá¸áááźáŻáᲠbytecode ááᯠhigh-level intermediate representation SSA (Static Single Assignment) áĄááźá áş ááźáąáŹááşá¸áá˛ááąá¸áááş
ZJIT áááş áá áşááťáááşáááşá¸áá˝ááş áááşá¸áááşá¸áá áşááŻááŻáśá¸ááᯠá áŻá ááşá¸áážáŻááŻááşááąáŹááşááźáŽá¸ YJIT áááş áĄááźáąááśááŻááşáá˝ááşááťáŹá¸á áŻá ááşá¸áážáŻáááŻáᏠááŻááşááąáŹááşáááŻááşáááşá áĄááťááŻá¸áĄá áŹá¸ááááŻáááŻááşá¸áĄáá˝ááşá ZJIT áááş YJIT áá˝ááşáĄááŻáśá¸ááźáŻááąáŹ Lazy Basic Block Versioning (LBBV) áááşá¸áááŹáĄá áŹá¸ á ááŹá¸ááźááşáá áŻááąáŹááşá¸ááŹá¸ááąáŹááááŻááşá¸áááşááąááŹáĄááťááŻá¸áĄá áŹá¸áááŻáĄááŻáśá¸ááźáŻáááˇáş ááášááááş JIT ááááŻááŹáááŻáĄááąáŹááşáĄáááşááąáŹáşáááşá
áĄáááˇáşááźááˇáş IR áááŻáĄááŻáśá¸ááźáŻááźááşá¸ááźááˇáş YJIT áá˝ááşáážáááąáŹ áĄáá˝ááşáĄá
áŹá¸áážá ááźáżááŹááťáŹá¸ááᯠááźáąáážááşá¸áááŻááşáááşááźá
áşááźáŽá¸ áĄáááˇáşááťáŹá¸á
á˝áŹááąáŹ JIT á
áŻá
ááşá¸áážáŻááᯠáĄááŹáááşáá˝ááş áĄááąáŹááşáĄáááşááąáŹáşáááşáĄáá˝ááş áĄááźáąááśáĄáŻááşááźá
áşááťááąá¸áᏠáĄáááˇáşááźážááˇáşáááşáážáŻááťáŹá¸ (áĽááᏠáááŻáááŻááźááşá¸áááşááąáŹ inline ááźááˇáşááťááşáážáŻáá˛áˇáááŻáˇ) áááŻáá˝ááˇáşáᏠJIT ááᯠááá°ááŽááąáŹááááşááąáŹááşá¸ááťáŹá¸áááŻáˇ áááŻááşááťáąáŹááŽáá˝áąááźá
áşá
áąáááş áááŻáááŻáá˝ááşáá°á
áąáááşá áááŹá¸áááŻá¸ááť áĄááťááŻá¸áĄá
áŹá¸ ááááŻáááŻááşá¸ááźááşá¸ ááąáŹáşáááşáááŻáˇ ááźááşáá˝áŹá¸ááźááşá¸áááş ááŻááşááž áážáŻááşáá˝áąá¸áážáŻááᯠáááşáážáŹá¸ááźáŽá¸ ááśáˇáááŻá¸áá°áĄáá
áşááťáŹá¸ ááŤáááşáá˝ááˇáşááźáŻáááş (YJIT á LBBV ááᯠáĄááŻáśá¸ááźáŻááźááşá¸ááźáąáŹááˇáş áááąáŹááťááşááᯠáĄááźáŹá¸ááąáŹ ááśáˇáááŻá¸áá°ááŽáá°ááťáŹá¸ááž ááááşááážáŹá¸ááźá
áşá
áąáá˛áˇááźáŽá¸ Shopify áááşáááşá¸ááťáŹá¸ááᏠááŽáá˝ááşáááşááŽá¸ááźááşá¸ááźá
áşáááş)á
source: opennet.ru
