Red Hat arendab MIR JIT kompilaatorit

Red Hatis arendus kÀimas uus kerge JIT-kompilaator MINA, mis tagab koodi tÀitmise, mis on eelnevalt teisendatud vahepealseks esituseks MIR (Medium Internal Representation, mida ei tohi segi ajada mÔne muu vaheesitlusega MINA (kesktaseme IR), kasutatakse Rusti kompilaatoris). Projekti eesmÀrk on luua raamistik kiirete ja kompaktsete tÔlkide ja JITi rakendamiseks. Projekti kood on kirjutatud C ja jaotatud MIT litsentsi alusel.

Praeguses arendusjĂ€rgus valmistatakse ette tĂ”lkijaid MIR-i vaheesitusse C keel ja bitkood LLVM (Bitcode), kuid tulevikus on plaanis juurutada MIR genereerimise vĂ”imalus WebAssembly jaoks, Java baitkood, CIL (Common Intermediate Language), Rust ja C++. Projekti arendab ĂŒks JIT-i mootorite arendajatest MJIT, kasutatud Ruby. Esiteks on plaanis juurutada MIR-il pĂ”hinev JIT CRuby Đž MRuby. Tulevikus on vĂ”imalik ka GCC-d MIR-i kasutamiseks portida.

Red Hat arendab MIR JIT kompilaatorit

Vahepealset MIR-koodi saab esitada binaarsel ja tekstilisel (loetaval) kujul. Seda koodi saab kÀivitada interpretaatoris ja selle pÔhjal genereerida masinkoodi (x86_64, ARM64, PPC64 ja MIPS64 plaanides). Samuti on vÔimalik teostada pöördkonverteerimist - MIR-ist CIL-i, Java baitkoodi, WebAssembly ja C-koodi.

MIR-i omadustest torkavad silma range tippimine, moodulite ja funktsioonide tugi, juhiste komplekti pakkumine tĂŒĂŒbi teisendamiseks, vĂ”rdluseks, aritmeetilisteks ja loogilisteks operatsioonideks, hargnemiseks jne. Moodulid, mis sisaldavad MIR-vormingusse teisendatud funktsioonide komplekti, saab laadida teekide kujul, samuti saab laadida vĂ€list C-koodi.

Red Hat arendab MIR JIT kompilaatoritRed Hat arendab MIR JIT kompilaatorit

JIT-is vahepealse koodi kĂ€ivitamise peamine eelis natiivseteks tĂ€itmisfailideks kompileerimise asemel on vĂ”imalus genereerida kompaktseid faile, mida saab kĂ€ivitada ilma erinevate riistvaraarhitektuuride (x86, ARM, PPC, MIPS) ĂŒmberehitamiseta. Toetamata arhitektuuride jaoks on saadaval tĂ”lgendusreĆŸiim, mis on MIR-i puhul 6-10 korda aeglasem kui JIT.

Olemasolevate JIT-kompilaatorite puudused
VĂ€idetavalt on GCC ja LLVM liiga ĂŒlespuhutud, neil on vĂ€ike kompileerimiskiirus ja neid on keeruline erinevate programmeerimiskeelte kombineeritud optimeerimiseks rakendada. MIR-i arendajad pĂŒĂŒdsid neid lahendada
probleemid ja seatud eesmÀrgid:

  • MIR-is koostamine peaks olema vĂ€hemalt 100 korda kiirem kui GCC-s;
  • MIR-i tĂ€itmise JIT peab olema vĂ€ga kompaktne ja sisaldama ligikaudu 15 tuhat koodirida;
  • MIR-i kĂ€ivitamine JIT-i abil ei tohiks olla rohkem kui 30% aeglasem kui GCC-s samast C-koodist kompileeritud kĂ€ivitatava faili jĂ”udlus ("-O2" optimeerimisega);
  • Initsialiseerimisetapid enne tegeliku tĂ€itmise algust peaksid vĂ”tma 100 korda vĂ€hem aega;
  • JIT-i MIR-i esitus peab olema 100 korda vĂ€iksem kui GCC-s kompileeritud kĂ€ivitatav fail.

Praegusel kujul on MIR-i juurutamine paljuski ees algselt seatud eesmĂ€rkidest: testid on nĂ€idanud, et kompileerimise jĂ”udlus MIR-is on 2 korda kiirem kui “GCC -O178”, tĂ€itmisjĂ”udlus jÀÀb natiivsest koodist 6% maha, koodi suurus. on 144 korda vĂ€iksem, on MIR-i juurutamise JIT 16 tuhat koodirida.

Red Hat arendab MIR JIT kompilaatorit

Allikas: opennet.ru

Ostke DDoS-kaitsega saitide jaoks usaldusvÀÀrne hostimine, VPS VDS-serverid đŸ”„ Osta usaldusvÀÀrne veebimajutus DDoS-kaitsega, VPS VDS serverid | ProHoster