A compiler JIT anyar, ZJIT, geus ditambahkeun kana codebase palaksanaan rujukan basa Ruby sarta diposisikan salaku generasi saterusna Ruby JIT. ZJIT bakal dilebetkeun kana sékrési utama Ruby 3.5 salajengna, dimana éta bakal sayogi salaku pilihan sareng kompiler YJIT JIT, sareng tiasa ngagentos éta dina Ruby 3.6. Kawas YJIT, kompiler JIT anyar ditulis dina Rust. Kadua kompiler JIT diciptakeun ku tim pamekar di Shopify salaku bagian tina inisiatif pikeun ningkatkeun kinerja program Ruby anu nganggo kerangka Rails sareng nyauran seueur metode.
Teu kawas YJIT, kompiler JIT anyar teu narjamahkeun YARV mesin virtual bytecode kana ngagambarkeun panengah-tingkat low (dasarna ampir langsung kana kode mesin), tapi transforms bytecode kana tingkat tinggi SSA representasi panengah (Tunggal Assignment statik), leuwih nu fase optimasi tambahan bisa dilaksanakeun sarta optimasi bisa dipigawé ku hiji panon on kodeu ulang, tinimbang operasi badag.
ZJIT ngalaksanakeun kompilasi sadaya metode sakaligus, sedengkeun YJIT ngan ukur tiasa ngadamel kompilasi blok dasar. Pikeun profiling tipe, ZJIT nerapkeun arsitéktur JIT klasik anu ngagunakeun akumulasi data tipe sajarah juru tinimbang téhnik Lazy Basic Block Versioning (LBBV) dipaké dina YJIT.
Ngagunakeun IR tingkat tinggi bakal ngajawab masalah skalabilitas nu YJIT boga, iklas yayasan pikeun palaksanaan hareup kompilasi JIT multi-tingkat, ngaktifkeun optimizations canggih (kayaning deployment inline leuwih agrésif), sarta nyieun leuwih gampang adaptasi JIT kana platform béda. Balik deui ka modél profil tipe tradisional bakal ngaleungitkeun pajeulitna tina kode sareng ngamungkinkeun para kontributor énggal ilubiung (pamakéan LBBV YJIT nyababkeun proyék éta teu jelas pikeun kontributor sanés sareng ngan ukur dikembangkeun ku karyawan Shopify).
sumber: opennet.ru
