Red Hat-da
Hazırkı inkişaf mərhələsində MIR-in aralıq nümayəndəliyinə tərcüməçilər hazırlanır
Aralıq MIR kodu ikili və mətn (oxunan) formada təqdim edilə bilər. Bu kod tərcüməçidə icra oluna bilər və onun əsasında maşın kodu yaradıla bilər (x86_64, ARM64, PPC64 və MIPS64 planlarında). Ters çevrilməni də həyata keçirmək mümkündür - MIR-dən CIL-ə, Java bayt koduna, WebAssembly və C koduna.
MİR-in xüsusiyyətləri arasında ciddi şəkildə yazım, modul və funksiyaların dəstəklənməsi, tipin dəyişdirilməsi, müqayisəsi, hesab və məntiqi əməliyyatlar, budaqlanma və s. MIR formatına çevrilmiş bir sıra funksiyaları ehtiva edən modullar kitabxanalar şəklində yüklənə bilər və həmçinin xarici C kodunu yükləyə bilər.
Doğma icra edilə bilən fayllara tərtib etmək əvəzinə JIT-də aralıq kodun icrasının əsas üstünlüyü müxtəlif aparat arxitekturalarında (x86, ARM, PPC, MIPS) yenidən qurulmadan icra oluna bilən kompakt fayllar yaratmaq imkanıdır. Dəstəklənməyən arxitekturalar üçün MIR vəziyyətində JIT-dən 6-10 dəfə yavaş olan şərh rejimi mövcuddur.
Mövcud JIT kompilyatorlarının çatışmazlıqları
GCC və LLVM-nin həddən artıq şişkin olduğu, aşağı tərtib sürətinə malik olduğu və müxtəlif proqramlaşdırma dilləri üçün birləşdirilmiş optimallaşdırmaların həyata keçirilməsinin çətin olduğu deyilir. MIR tərtibatçıları bunları həll etməyə çalışdılar
problemlər və müəyyən məqsədlər:
- MIR-də tərtib GCC-dən ən azı 100 dəfə daha sürətli olmalıdır;
- MIR-in icrası üçün JIT çox yığcam olmalıdır və təxminən 15 min sətir kod ehtiva etməlidir;
- JIT-dən istifadə edərək MIR-in icrası GCC-də eyni C kodundan tərtib edilmiş icra olunanın performansından 30%-dən çox yavaş olmamalıdır (“-O2” optimallaşdırmaları ilə);
- Faktiki icraya başlamazdan əvvəl başlatma mərhələləri 100 dəfə az vaxt aparmalıdır;
- JIT üçün MIR təqdimatı GCC-də tərtib edilmiş icra olunandan 100 dəfə kiçik olmalıdır.
Hazırkı formada MIR tətbiqi bir çox cəhətdən ilkin qarşıya qoyulan məqsədləri qabaqlayır: sınaqlar göstərdi ki, MIR-də tərtibetmə performansı “GCC -O2” ilə müqayisədə 178 dəfə sürətlidir, icra performansı yerli koddan 6% geri qalır, kod ölçüsü 144 dəfə kiçikdir, MIR tətbiqi JIT 16 min sətir koddur.
Mənbə: opennet.ru