Yeni JIT kompilyatoru, ZJIT, Ruby dili istinad tətbiqi kod bazasına əlavə edildi və Ruby JIT-in növbəti nəsli kimi yerləşdirildi. ZJIT Ruby 3.5-in növbəti əsas buraxılışına daxil ediləcək, burada o, YJIT JIT kompilyatoru ilə yanaşı seçim kimi təqdim olunacaq və onu Ruby 3.6-da əvəz edə bilər. YJIT kimi, yeni JIT kompilyatoru Rustda yazılmışdır. Hər iki JIT kompilyatoru Shopify-da tərtibatçılar qrupu tərəfindən Rails çərçivəsini istifadə edən və bir çox metodu çağıran Ruby proqramlarının işini yaxşılaşdırmaq təşəbbüsünün bir hissəsi kimi yaradılmışdır.
YJIT-dən fərqli olaraq, yeni JIT kompilyatoru YARV virtual maşınının bayt kodunu aşağı səviyyəli aralıq təmsilçiliyə (əsasən, demək olar ki, birbaşa maşın koduna) tərcümə etmir, lakin bayt kodunu yüksək səviyyəli aralıq təmsil SSA-ya (Statik Tək Təyinat) çevirir, bunun üzərində əlavə optimallaşdırma mərhələləri həyata keçirilə bilər və yalnız böyük bir şəkildə bloklama ilə həyata keçirilə bilər. cari əməliyyatlar.
ZJIT eyni anda bütün metodun tərtibini həyata keçirir, YJIT isə yalnız əsas blokların tərtibini idarə edə bilər. Tip profili üçün ZJIT YJIT-də istifadə olunan Lazy Basic Block Versioning (LBBV) texnikası əvəzinə tərcüməçinin yığılmış tarixi tip məlumatlarından istifadə edən klassik JIT arxitekturasını tətbiq edir.
Yüksək səviyyəli IR-dən istifadə YJIT-də mövcud olan miqyaslanma problemlərini həll edəcək, çoxsəviyyəli JIT kompilyasiyasının gələcəkdə tətbiqi üçün əsas yaradacaq, qabaqcıl optimallaşdırmaları (daha aqressiv daxili yerləşdirmə kimi) təmin edəcək və JIT-i müxtəlif platformalara uyğunlaşdırmağı asanlaşdıracaq. Ənənəvi tip profilləşdirmə modelinə qayıtmaq koddan mürəkkəbliyi aradan qaldıracaq və yeni töhfə verənlərə iştirak etməyə imkan verəcək (YJIT-in LBBV-dən istifadə etməsi layihənin digər töhfəçilər üçün qaranlıq olması və yalnız Shopify əməkdaşları tərəfindən işlənib hazırlanması ilə nəticələndi).
Mənbə: opennet.ru
