Ruby-koadebasis brûkt nije JIT-kompiler ZJIT

In nije JIT-kompiler, ZJIT, is tafoege oan 'e koadebasis foar de referinsje-ymplemintaasje fan Ruby en is posisjonearre as de folgjende generaasje fan Ruby JIT. ZJIT sil opnommen wurde yn 'e folgjende grutte release fan Ruby 3.5, dêr't it beskikber sil wêze as in opsje neist de YJIT JIT-kompiler, en it kin ferfange yn Ruby 3.6. Lykas YJIT is de nije JIT-kompiler skreaun yn Rust. Beide JIT-kompilers waarden makke troch in team fan ûntwikkelders by Shopify as ûnderdiel fan in inisjatyf om de prestaasjes te ferbetterjen fan Ruby-programma's dy't it Rails-framework brûke en in protte metoaden oproppe.

Oars as YJIT oerset de nije JIT-kompiler de bytekoade fan 'e YARV-firtuele masine net yn in tuskenlizzende fertsjintwurdiging op leech nivo (yn essinsje hast direkt yn masinekoade), mar transformearret de bytekoade yn in tuskenlizzende fertsjintwurdiging op heech nivo SSA (Static Single Assignment), wêr't ekstra optimalisaasjefazen oer ymplementearre wurde kinne en optimalisaasje útfierd wurde kin mei it each op grutte blokken koade, ynstee fan allinich te fertrouwen op aktuele operaasjes.

ZJIT fiert kompilaasje út fan in hiele metoade tagelyk, wylst YJIT allinich kompilaasje fan basisblokken koe behannelje. Foar typeprofilering ymplementearret ZJIT in klassike JIT-arsjitektuer dy't de sammele histoaryske typegegevens fan 'e ynterpreter brûkt ynstee fan 'e Lazy Basic Block Versioning (LBBV) technyk dy't brûkt wurdt yn YJIT.

It brûken fan in IR op heech nivo sil de skalberberensproblemen dy't YJIT hat oplosse, de basis lizze foar takomstige ymplemintaasje fan JIT-kompilaasje op meardere nivo's, avansearre optimalisaasjes mooglik meitsje (lykas agressiver inline-ynset), en it makliker meitsje om de JIT oan te passen oan ferskate platfoarms. Weromgean nei in tradisjoneel typeprofilearringsmodel sil de kompleksiteit fan 'e koade fuorthelje en nije bydragejouwers tastean om mei te dwaan (it gebrûk fan LBBV troch YJIT soarge derfoar dat it projekt ûndúdlik wie foar oare bydragejouwers en allinich ûntwikkele waard troch Shopify-meiwurkers).

Boarne: opennet.ru

Add a comment