Red Hat'ta
Mevcut geliştirme aşamasında, MIR'in ara temsiline yönelik çevirmenler hazırlanmaktadır.
Ara MIR kodu ikili ve metin (okunabilir) biçimde sunulabilir. Bu kod bir yorumlayıcıda çalıştırılabilir ve buna dayalı olarak makine kodu oluşturulabilir (x86_64, ARM64, PPC64 ve MIPS64 planlarında). MIR'den CIL'ye, Java bayt koduna, WebAssembly'ye ve C koduna ters dönüşüm gerçekleştirmek de mümkündür.
MIR'ın özellikleri arasında katı yazım, modül ve işlevler için destek, tür dönüşümü için bir dizi talimat sağlanması, karşılaştırma, aritmetik ve mantıksal işlemler, dallanma vb. öne çıkıyor. MIR formatına dönüştürülmüş bir dizi işlevi içeren modüller, kitaplıklar biçiminde yüklenebilir ve ayrıca harici C kodunu da yükleyebilir.
Yerel yürütülebilir dosyalar halinde derlemek yerine ara kodu JIT'te yürütmenin temel avantajı, farklı donanım mimarilerinde (x86, ARM, PPC, MIPS) yeniden oluşturma gerekmeden yürütülebilecek kompakt dosyalar oluşturma yeteneğidir. Desteklenmeyen mimariler için, MIR durumunda JIT'den 6-10 kat daha yavaş olan bir yorumlama modu mevcuttur.
Mevcut JIT derleyicilerinin dezavantajları
GCC ve LLVM'nin aşırı derecede şişirildiği, derleme hızının düşük olduğu ve farklı programlama dilleri için birleşik optimizasyonların uygulanmasının zor olduğu söyleniyor. MIR geliştiricileri bunları çözmeye çalıştı
Sorunlar ve hedefler belirleyin:
- MIR'deki derleme, GCC'dekinden en az 100 kat daha hızlı olmalıdır;
- MIR yürütmesi için JIT çok kompakt olmalı ve yaklaşık 15 bin satır kod içermelidir;
- JIT kullanarak MIR'yi yürütmek, GCC'deki aynı C kodundan derlenen ("-O30" optimizasyonlarıyla) bir yürütülebilir dosyanın performansından %2'dan daha yavaş olmamalıdır;
- Gerçek yürütme başlamadan önceki başlatma aşamaları 100 kat daha az zaman alacaktır;
- JIT'in MIR temsili, GCC'de derlenen yürütülebilir dosyadan 100 kat daha küçük olmalıdır.
Mevcut haliyle, MIR uygulaması birçok açıdan başlangıçta belirlenen hedeflerin ilerisindedir: testler, MIR'deki derleme performansının "GCC -O2"den 178 kat daha hızlı olduğunu, yürütme performansının yerel kodun %6 gerisinde olduğunu, kod boyutunun ise %144 olduğunu göstermiştir. 16 kat daha küçük olan MIR uygulaması JIT, XNUMX bin kod satırıdır.
Kaynak: opennet.ru