ریڈ ہیٹ نے MIR JIT کمپائلر تیار کیا۔

ریڈ ہیٹ پر ترقی جاری ہے نیا ہلکا پھلکا جے آئی ٹی کمپائلر MIR، جو اس کوڈ پر عمل درآمد کو یقینی بناتا ہے جو پہلے ایک انٹرمیڈیٹ نمائندگی MIR (میڈیم انٹرنل ریپریزنٹیشن) میں تبدیل ہو چکا ہے، کسی اور انٹرمیڈیٹ نمائندگی کے ساتھ الجھن میں نہ پڑے MIR (درمیانی سطح کا IR)، جو رسٹ کمپائلر میں استعمال ہوتا ہے)۔ اس منصوبے کا مقصد تیز رفتار اور کمپیکٹ ترجمانوں اور جے آئی ٹی کو لاگو کرنے کے لیے ایک فریم ورک فراہم کرنا ہے۔ پروجیکٹ کوڈ C اور میں لکھا گیا ہے۔ نے بانٹا MIT لائسنس کے تحت.

ترقی کے موجودہ مرحلے پر، MIR کی درمیانی نمائندگی کے لیے مترجم تیار ہیں۔ سی زبان اور بٹ کوڈ ایل ایل وی ایم (بِٹ کوڈ)، لیکن مستقبل میں ویب اسمبلی، جاوا بائیک کوڈ کے لیے MIR پیدا کرنے کی صلاحیت کو نافذ کرنے کا منصوبہ بنایا گیا ہے۔ سی آئی ایل (کامن انٹرمیڈیٹ لینگویج)، زنگ اور C++۔ یہ پروجیکٹ جے آئی ٹی انجن ڈویلپرز میں سے ایک تیار کر رہا ہے۔ ایم جے آئی ٹی، روبی میں استعمال ہوتا ہے۔ سب سے پہلے ایم آئی آر پر مبنی جے آئی ٹی کو لاگو کرنے کا منصوبہ ہے۔ کروبی۔ и مربی. مستقبل میں، MIR استعمال کرنے کے لیے GCC کو پورٹ کرنا بھی ممکن ہے۔

ریڈ ہیٹ نے MIR JIT کمپائلر تیار کیا۔

انٹرمیڈیٹ MIR کوڈ بائنری اور ٹیکسٹ (پڑھنے کے قابل) شکل میں پیش کیا جا سکتا ہے۔ اس کوڈ کو مترجم میں عمل میں لایا جا سکتا ہے اور اس کی بنیاد پر مشین کوڈ تیار کیا جا سکتا ہے (x86_64، ARM64، PPC64 اور MIPS64 منصوبوں میں)۔ ریورس کنورژن انجام دینا بھی ممکن ہے - MIR سے CIL، Java bytecode، WebAssembly اور C کوڈ۔

MIR کی خصوصیات میں، سخت ٹائپنگ، ماڈیولز اور فنکشنز کے لیے سپورٹ، ٹائپ کنورژن کے لیے ہدایات کے سیٹ کی فراہمی، موازنہ، ریاضی اور منطقی آپریشنز، برانچنگ وغیرہ نمایاں ہیں۔ ماڈیولز، جن میں MIR فارمیٹ میں تبدیل کیے گئے فنکشنز کا ایک سیٹ شامل ہے، لائبریریوں کی شکل میں لوڈ کیا جا سکتا ہے، اور بیرونی C کوڈ بھی لوڈ کر سکتا ہے۔

ریڈ ہیٹ نے MIR JIT کمپائلر تیار کیا۔ریڈ ہیٹ نے MIR JIT کمپائلر تیار کیا۔

مقامی ایگزیکیوٹیبل فائلوں میں کمپائل کرنے کے بجائے JIT میں انٹرمیڈیٹ کوڈ پر عمل کرنے کا اہم فائدہ یہ ہے کہ وہ کمپیکٹ فائلز تیار کرنے کی صلاحیت ہے جو مختلف ہارڈویئر آرکیٹیکچرز (x86, ARM, PPC, MIPS) پر دوبارہ تعمیر کیے بغیر عمل میں لائی جا سکتی ہیں۔ غیر تعاون یافتہ آرکیٹیکچرز کے لیے، ایک تشریحی موڈ دستیاب ہے، جو MIR کے معاملے میں JIT سے 6-10 گنا سست ہے۔

موجودہ جے آئی ٹی مرتب کرنے والوں کے نقصانات
کہا جاتا ہے کہ GCC اور LLVM بہت زیادہ پھولے ہوئے ہیں، ان کی تالیف کی رفتار کم ہے، اور مختلف پروگرامنگ زبانوں کے لیے مشترکہ اصلاح کو نافذ کرنا مشکل ہے۔ MIR ڈویلپرز نے ان کو حل کرنے کی کوشش کی۔
مسائل اور اہداف کا تعین:

  • MIR میں تالیف GCC کے مقابلے میں کم از کم 100 گنا تیز ہونی چاہیے۔
  • MIR پر عمل درآمد کے لیے JIT بہت کمپیکٹ ہونی چاہیے اور اس میں کوڈ کی تقریباً 15 ہزار لائنیں شامل ہوں گی۔
  • JIT کا استعمال کرتے ہوئے MIR پر عمل درآمد GCC میں اسی C کوڈ سے مرتب کردہ ایک ایگزیکیوٹیبل کی کارکردگی سے 30% سے زیادہ سست نہیں ہونا چاہیے ("-O2" اصلاح کے ساتھ)؛
  • اصل عمل درآمد شروع ہونے سے پہلے ابتدائی مراحل میں 100 گنا کم وقت لگنا چاہئے۔
  • JIT کے لیے MIR کی نمائندگی GCC میں مرتب کردہ قابل عمل سے 100 گنا چھوٹی ہونی چاہیے۔

اپنی موجودہ شکل میں، MIR کا نفاذ ابتدائی طور پر طے شدہ اہداف سے کئی طریقوں سے آگے ہے: ٹیسٹ سے پتہ چلا ہے کہ MIR میں تالیف کی کارکردگی "GCC -O2" سے 178 گنا تیز ہے، عمل درآمد کی کارکردگی مقامی کوڈ سے 6% پیچھے ہے، کوڈ کا سائز 144 گنا چھوٹا ہے، MIR پر عمل درآمد JIT 16 ہزار لائنوں کا کوڈ ہے۔

ریڈ ہیٹ نے MIR JIT کمپائلر تیار کیا۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں