V Red Hat
V súčasnom štádiu vývoja sú prekladatelia do strednej reprezentácie MIR pripravení
Medziľahlý MIR kód môže byť prezentovaný v binárnej a textovej (čitateľnej) forme. Tento kód môže byť spustený v tlmočníkovi a na jeho základe môže byť generovaný strojový kód (x86_64, v plánoch ARM64, PPC64 a MIPS64). Je tiež možné vykonať spätnú konverziu - z MIR na CIL, Java bytecode, WebAssembly a C kód.
Medzi vlastnosťami MIR vyniká striktné písanie, podpora modulov a funkcií, poskytovanie súboru inštrukcií na konverziu typov, porovnávanie, aritmetické a logické operácie, vetvenie atď. Moduly, ktoré obsahujú sadu funkcií konvertovaných do formátu MIR, je možné načítať vo forme knižníc a môžu tiež načítať externý C kód.
Kľúčovou výhodou vykonávania prechodného kódu v JIT namiesto kompilácie do natívnych spustiteľných súborov je schopnosť generovať kompaktné súbory, ktoré možno spustiť bez prestavby na rôznych hardvérových architektúrach (x86, ARM, PPC, MIPS). Pre nepodporované architektúry je dostupný interpretačný režim, ktorý je v prípade MIR 6-10 krát pomalší ako JIT.
Nevýhody existujúcich JIT kompilátorov
Hovorí sa, že GCC a LLVM sú príliš nafúknuté, majú nízku rýchlosť kompilácie a je ťažké implementovať kombinované optimalizácie pre rôzne programovacie jazyky. Vývojári MIR sa ich pokúsili vyriešiť
problémy a stanovené ciele:
- Kompilácia v MIR by mala byť aspoň 100-krát rýchlejšia ako v GCC;
- JIT na vykonávanie MIR musí byť veľmi kompaktný a obsahovať približne 15 tisíc riadkov kódu;
- Spustenie MIR pomocou JIT by nemalo byť o viac ako 30 % pomalšie ako výkon spustiteľného súboru skompilovaného z rovnakého kódu C v GCC (s optimalizáciami "-O2");
- Fázy inicializácie pred začatím skutočného vykonávania by mali trvať 100-krát kratšie;
- Reprezentácia MIR pre JIT musí byť 100-krát menšia ako spustiteľný súbor skompilovaný v GCC.
Vo svojej súčasnej podobe je implementácia MIR v mnohých smeroch pred pôvodne stanovenými cieľmi: testy ukázali, že výkon kompilácie v MIR je 2-krát rýchlejší ako „GCC -O178“, výkon vykonávania je o 6 % nižší ako natívny kód, veľkosť kódu je 144-krát menšia, implementácia MIR JIT má 16 tisíc riadkov kódu.
Zdroj: opennet.ru