Red Hat sviluppa un compilatore MIR JIT

À Red Hat sviluppu in corso novu compilatore JIT ligeru ME, chì assicura l'esekzione di codice chì hè stata cunvertita prima in una rapprisintazioni intermediata MIR (Representazione Interna Media, per ùn esse cunfundita cù una altra rapprisintazioni intermediata). ME (IR mid-level), usatu in u compilatore Rust). U prugettu hà da scopu di furnisce un framework per implementà interpreti veloci è compatti è JIT. U codice di u prugettu hè scrittu in C è distribuitu da sottu a licenza MIT.

In u stadiu attuale di u sviluppu, i traduttori in a rapprisintazioni intermedia di MIR sò preparati lingua C è bitcode LLVM (Bitcode), ma in u futuru hè previstu di implementà a capacità di generà MIR per WebAssembly, Java bytecode, CIL (Lingua Intermedia Cumuna), Rust è C++. U prughjettu hè sviluppatu da unu di i sviluppatori di u mutore JIT MJIT, usatu in Ruby. Prima di tuttu, JIT basatu in MIR hè previstu per esse implementatu CRuby и MRuby. In u futuru, hè ancu pussibule di portà GCC per utilizà MIR.

Red Hat sviluppa un compilatore MIR JIT

U codice MIR intermediu pò esse presentatu in forma binaria è testu (leggibile). Stu codice pò esse eseguitu in un interprete è u codice macchina pò esse generatu basatu annantu à questu (x86_64, in i piani ARM64, PPC64 è MIPS64). Hè ancu pussibule di realizà a cunversione inversa - da MIR à CIL, bytecode Java, WebAssembly è codice C.

Trà e caratteristiche di MIR, typing strettu, supportu per i moduli è e funzioni, furnisce un inseme di struzzioni per a cunversione di tipu, paraguni, operazioni aritmetiche è logiche, branching, etc. Moduli, chì includenu un inseme di funzioni cunvertiti à u formatu MIR, ponu esse carricati in forma di biblioteche, è ponu ancu carricà u codice C esternu.

Red Hat sviluppa un compilatore MIR JITRed Hat sviluppa un compilatore MIR JIT

U vantaghju chjave di eseguisce codice intermediu in JIT invece di cumpilà in i fugliali eseguibili nativi hè a capacità di generà schedarii compacti chì ponu esse eseguiti senza ricustruisce in diverse architetture hardware (x86, ARM, PPC, MIPS). Per architetture senza supportu, un modu di interpretazione hè dispunibule, chì in u casu di MIR hè 6-10 volte più lento di JIT.

Svantaghji di i compilatori JIT esistenti
Si dice chì GCC è LLVM sò troppu gonfiati, anu una bassa velocità di compilazione, è sò difficiuli di implementà ottimisazioni cumminate per diverse lingue di prugrammazione. I sviluppatori MIR anu pruvatu à risolve questi
prublemi è stabilisce scopi:

  • A compilazione in MIR deve esse almenu 100 volte più veloce chì in GCC;
  • U JIT per l'esekzione MIR deve esse assai compactu è include circa 15 mila linee di codice;
  • Eseguisce MIR cù JIT ùn deve esse micca più di 30% più lento di u rendiment di un eseguibile compilatu da u listessu codice C in GCC (cù ottimisazioni "-O2");
  • I tappe di inizializazione prima di l'esekzione attuale deve piglià 100 volte menu tempu;
  • A rapprisentazione MIR per JIT deve esse 100 volte più chjuca di l'eseguibile compilatu in GCC.

In a so forma attuale, l'implementazione MIR hè in parechje manere davanti à l'ugettivi inizialmente stabiliti: i testi anu dimustratu chì u rendiment di compilazione in MIR hè 2 volte più veloce di "GCC -O178", a prestazione di esecutivu hè 6% daretu à u codice nativu, a dimensione di u codice. hè 144 volte più chjucu, l'implementazione MIR JIT hè 16 mila linee di codice.

Red Hat sviluppa un compilatore MIR JIT

Source: opennet.ru

Cumprate un hosting affidabile per i siti cù prutezzione DDoS, servitori VPS VDS 🔥 Cumprate un hosting di siti web affidabile cù prutezzione DDoS, servitori VPS VDS | ProHoster