Red Hat ûntwikkelet MIR JIT-kompiler

By Red Hat ûntwikkeling oan de gang nije lichtgewicht JIT-kompiler MY. MY (mid-level IR), brûkt yn 'e Rust-kompiler). It projekt hat as doel in ramt te jaan foar it útfieren fan rappe en kompakte tolken en JIT. It projekt koade is skreaun yn C en ferspraat troch ûnder de MIT-lisinsje.

Op it hjoeddeistige stadium fan ûntwikkeling wurde oersetters yn 'e tuskenlizzende fertsjintwurdiging fan MIR taret op C taal en bitcode LLVM (Bitcode), mar yn 'e takomst is it plan om de mooglikheid te ymplementearjen om MIR te generearjen foar WebAssembly, Java bytecode, CIL (Mienskiplike tuskentaal), Rust en C++. It projekt wurdt ûntwikkele troch ien fan 'e JIT-motorûntwikkelders MJIT, brûkt yn Ruby. Alderearst is JIT basearre op MIR pland om te ymplementearjen foar CRuby и MRuby. Yn 'e takomst is it ek mooglik om GCC te haven om MIR te brûken.

Red Hat ûntwikkelet MIR JIT-kompiler

De tuskenlizzende MIR-koade kin wurde presintearre yn binêre en tekst (lêsbere) foarm. Dizze koade kin wurde útfierd yn in tolk en masine koade kin oanmakke wurde basearre op it (x86_64, yn ARM64, PPC64 en MIPS64 plannen). It is ek mooglik om de omkearde konverzje út te fieren - fan MIR nei CIL, Java bytecode, WebAssembly en C-koade.

Under de skaaimerken fan MIR steane strikt typen, stipe foar modules en funksjes, it oanbieden fan in set ynstruksjes foar typekonverzje, fergeliking, arithmetyske en logyske operaasjes, branching, ensfh. Modules, dy't omfetsje in set fan funksjes omboud ta it MIR-formaat, kinne wurde laden yn 'e foarm fan biblioteken, en kinne ek lade eksterne C-koade.

Red Hat ûntwikkelet MIR JIT-kompilerRed Hat ûntwikkelet MIR JIT-kompiler

It wichtichste foardiel fan it útfieren fan tuskenlizzende koade yn JIT ynstee fan kompilearjen yn native útfierbere bestannen is de mooglikheid om kompakte bestannen te generearjen dy't kinne wurde útfierd sûnder opnij op te bouwen op ferskate hardware-arsjitektueren (x86, ARM, PPC, MIPS). Foar net-stipe arsjitektueren is in ynterpretaasjemodus beskikber, dy't yn it gefal fan MIR 6-10 kear stadiger is as JIT.

Neidielen fan besteande JIT-kompilers
GCC en LLVM wurde sein te wêzen opblaasd, hawwe lege kompilaasje snelheid, en binne lestich te fieren kombinearre optimalisaasjes foar ferskate programmeartalen. MIR-ûntwikkelders besochten dizze op te lossen
problemen en set doelen:

  • Kompilaasje yn MIR moat op syn minst 100 kear flugger wêze as yn GCC;
  • De JIT foar MIR-útfiering moat tige kompakt wêze en omfetsje sawat 15 tûzen rigels koade;
  • It útfieren fan MIR mei JIT moat net mear as 30% stadiger wêze as de prestaasjes fan in útfierber kompilearre út deselde C-koade yn GCC (mei "-O2" optimisaasjes);
  • De inisjalisaasjestadia foardat de werklike útfiering begjint, moatte 100 kear minder tiid nimme;
  • De MIR-fertsjintwurdiging foar JIT moat 100 kear lytser wêze as de útfierbere kompilearre yn GCC.

Yn syn hjoeddeistige foarm is de MIR-ymplemintaasje op in protte manieren foarút fan 'e ynearsten ynstelde doelen: tests hawwe sjen litten dat kompilaasjeprestaasjes yn MIR 2 kear rapper binne as "GCC -O178", útfieringsprestaasjes is 6% efter native koade, de koadegrutte is 144 kear lytser, de MIR ymplemintaasje JIT is 16 tûzen rigels koade.

Red Hat ûntwikkelet MIR JIT-kompiler

Boarne: opennet.ru

Add a comment