By Red Hat
Op it hjoeddeistige stadium fan ûntwikkeling wurde oersetters yn 'e tuskenlizzende fertsjintwurdiging fan MIR taret op
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.
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.
Boarne: opennet.ru