Ve společnosti Red Hat
V současné fázi vývoje jsou připraveni překladatelé do střední reprezentace MIR
Mezilehlý MIR kód může být prezentován v binární a textové (čitelné) formě. Tento kód lze spustit v interpretu a na jeho základě lze generovat strojový kód (x86_64, v plánech ARM64, PPC64 a MIPS64). Je také možné provést zpětnou konverzi - z MIR na CIL, Java bytecode, WebAssembly a C kód.
Mezi vlastnostmi MIR vyniká striktní psaní, podpora modulů a funkcí, poskytování sady instrukcí pro převod typů, porovnávání, aritmetické a logické operace, větvení atd. Moduly, které obsahují sadu funkcí převedených do formátu MIR, lze načítat ve formě knihoven a mohou také načítat externí C kód.
Klíčovou výhodou spouštění přechodného kódu v JIT namísto kompilace do nativních spustitelných souborů je schopnost generovat kompaktní soubory, které lze spouštět bez přestavby na různých hardwarových architekturách (x86, ARM, PPC, MIPS). Pro nepodporované architektury je k dispozici interpretační režim, který je v případě MIR 6-10x pomalejší než JIT.
Nevýhody stávajících JIT kompilátorů
Říká se, že GCC a LLVM jsou příliš nabubřelé, mají nízkou rychlost kompilace a je obtížné implementovat kombinované optimalizace pro různé programovací jazyky. Vývojáři MIR se je pokusili vyřešit
problémy a stanovené cíle:
- Kompilace v MIR by měla být alespoň 100krát rychlejší než v GCC;
- JIT pro provádění MIR musí být velmi kompaktní a obsahovat přibližně 15 tisíc řádků kódu;
- Provádění MIR pomocí JIT by nemělo být o více než 30 % pomalejší než výkon spustitelného souboru zkompilovaného ze stejného kódu C v GCC (s optimalizacemi "-O2");
- Fáze inicializace před zahájením skutečného provádění by měly trvat 100krát méně času;
- Reprezentace MIR pro JIT musí být 100krát menší než spustitelný soubor zkompilovaný v GCC.
Ve své současné podobě je implementace MIR v mnoha ohledech před původně stanovenými cíli: testy ukázaly, že výkon kompilace v MIR je 2krát rychlejší než „GCC -O178“, výkon provádění je o 6 % nižší než nativní kód, velikost kódu je 144krát menší, implementace MIR JIT má 16 tisíc řádků kódu.
Zdroj: opennet.ru