Red Hat vyvíjí kompilátor MIR JIT

V Red Hat vývoj probíhá nový lehký JIT kompilátor MIR, který zajišťuje spuštění kódu dříve převedeného do mezilehlé reprezentace MIR (Medium Internal Representation, nezaměňovat s jinou mezilehlou reprezentací) MIR (střední úroveň IR) používaná v kompilátoru Rust). Cílem projektu je poskytnout rámec pro implementaci rychlých a kompaktních interpretů a JITů. Kód projektu je napsán v jazyce C a distribuovány pod licencí MIT.

V současné fázi vývoje jsou překladače do mezilehlé reprezentace MIR připraveny na jazyk C a bitový kód LLVM (Bitcode), ale v budoucnu se plánuje implementace možnosti generování MIR pro WebAssembly, Java bytecode, CIL (Common Intermediate Language), Rust a C++. Projekt vyvíjí jeden z vývojářů JIT enginu. MJIT, používaný v Ruby. JIT založený na MIR je plánován k implementaci primárně pro CRuby и MRubyV budoucnu se také nevylučuje možnost portování GCC pro použití MIR.

Red Hat vyvíjí kompilátor MIR JIT

Mezikód MIR lze reprezentovat v binární a textové (čitelné) podobě. Tento kód lze spustit v interpretu a generovat z něj strojový kód (x86_64, s plány pro ARM64, PPC64 a MIPS64). Je také možná zpětná konverze – z MIR do CIL, bajtkódu Java, WebAssembly a kódu C.

Mezi klíčové vlastnosti MIR patří silné typování, podpora modulů a funkcí a sada instrukcí pro konverzi typů, porovnávání, aritmetické a logické operace, větvení a další. Moduly, které zahrnují sadu funkcí převedených do formátu MIR, lze načíst jako knihovny a také načíst externí kód v jazyce C.

Red Hat vyvíjí kompilátor MIR JITRed Hat vyvíjí kompilátor MIR JIT

Klíčovou výhodou spouštění mezikódu v JIT namísto jeho kompilace do nativních spustitelných souborů je schopnost generovat kompaktní soubory, které lze spustit bez rekompilace na různých hardwarových architekturách (x86, ARM, PPC, MIPS). Pro nepodporované architektury je k dispozici interpretovaný režim, který je v případě MIR 6–10krát pomalejší než JIT.

Mezi nedostatky stávajících JIT kompilátorů
GCC a LLVM jsou kritizovány za svou nadměrnou rozložitost, pomalou kompilaci a obtížnost implementace kombinovaných optimalizací napříč různými programovacími jazyky. Vývojáři MIR se pokusili tyto problémy ř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 spuštění MIR musí být velmi kompaktní a musí obsahovat přibližně 15 tisíc řádků kódu;
  • Spuštění MIR pomocí JIT by nemělo být o více než 30 % pomalejší než výkon spustitelného souboru kompilovaného ze stejného kódu C v GCC (s optimalizací "-O2");
  • Inicializační fáze před zahájením skutečného provádění by měly trvat 100krát kratší dobu;
  • Reprezentace MIR pro JIT musí být 100krát menší než spustitelný soubor zkompilovaný v GCC.

Ve své současné podobě implementace MIR daleko předčí své původní cíle: testy ukázaly, že kompilační výkon MIR je 178krát rychlejší než GCC-O2, výkon provádění je o 6 % pomalejší než u nativního kódu, velikost kódu je 144krát menší a implementace MIR JIT má 16 000 řádků kódu.

Red Hat vyvíjí kompilátor MIR JIT

Zdroj: opennet.ru

Kupte si spolehlivý hosting pro stránky s DDoS ochranou, VPS VDS servery 🔥 Kupte si spolehlivý webhosting s ochranou DDoS, VPS VDS servery | ProHoster