لینکس کرنل میں رسٹ ڈویلپمنٹ ٹولز کو شامل کرنے کے معاملے پر بحث کرنے کی تجویز

نک ڈیساگنیئر (نک ڈیسالنیئرز)، جو فراہم کرنے کے لیے Google پر کام کرتا ہے۔ کی حمایت کلینگ کمپائلر کا استعمال کرتے ہوئے لینکس کرنل کی تعمیر اور بھی مدد کرنا زنگ کمپائلر میں کیڑے ٹھیک کریں، تجویز کردہ ایک کانفرنس میں منعقد لینکس پلمبرز کانفرنس 2020 زنگ میں دانا کے اجزاء کو تیار کرنا ممکن بنانے پر تبادلہ خیال کرنے کے لئے سیشن۔ نک LLVM کے لیے وقف ایک مائیکرو کانفرنس کا انعقاد کر رہا ہے، اور اس کا خیال ہے کہ کرنل میں رسٹ سپورٹ کے ممکنہ انضمام کے تکنیکی پہلوؤں پر بات کرنا اچھا ہو گا (اس نے پہلے ہی KBuild کے لیے ایک ورکنگ پروٹو ٹائپ تیار کر رکھا ہے) اور یہ سمجھنا چاہیے کہ آیا اس طرح کی حمایت کو ملنا چاہیے۔ بالکل شامل کیا جائے اور زنگ کے استعمال پر کیا پابندیاں قبول کی جائیں۔

ہمیں یاد ہے کہ اوپن سورس سمٹ اور ایمبیڈڈ لینکس کانفرنس میں ایک حالیہ بحث میں، لینس ٹوروالڈس اسے مسترد نہیں کیا زنگ جیسی زبانوں میں نان کور کرنل سب سسٹمز (مثال کے طور پر ڈرائیور) کی ترقی کے لیے بائنڈنگز کا ظہور۔ رسٹ میں ڈرائیوروں کو تیار کرنے کی صلاحیت ہمیں کم سے کم کوشش کے ساتھ محفوظ اور بہتر ڈرائیورز بنانے کی اجازت دے گی، فری کرنے کے بعد میموری تک رسائی، null pointer dereferences، اور buffer overruns جیسے مسائل سے پاک۔ اس خصوصیت کو نافذ کرنے کے لیے پہلے سے ہی کئی فریق ثالث پروجیکٹس موجود ہیں:

  • کمپنی کے ڈویلپرز "ایک بیرل میں مچھلی" تیار زنگ زبان میں لینکس کرنل کے لیے لوڈ ایبل ماڈیول لکھنے کے لیے ایک ٹول کٹ، سیکورٹی کو بڑھانے کے لیے انٹرفیس اور کرنل ڈھانچے پر تجریدی پرتوں کے سیٹ کا استعمال کرتے ہوئے۔ افادیت کا استعمال کرتے ہوئے موجودہ کرنل ہیڈر فائلوں کی بنیاد پر پرتیں خود بخود تیار ہوتی ہیں۔ بانڈجن. بجنا تہوں کی تعمیر کے لیے استعمال ہوتا ہے۔ انٹرلیئرز کے علاوہ، اسمبل شدہ ماڈیول staticlib پیکیج کا استعمال کرتے ہیں۔
  • چینی یونیورسٹی آف ہانگ کانگ کے محققین ترقی زنگ میں ایمبیڈڈ سسٹمز اور انٹرنیٹ آف تھنگز ڈیوائسز کے لیے ڈرائیورز تیار کرنے کا ایک پروجیکٹ، جو کرنل ہیڈر فائلوں کی بنیاد پر پرتیں بنانے کے لیے بائنڈجن کا بھی استعمال کرتا ہے۔ فریم ورک آپ کو کرنل میں تبدیلیاں کیے بغیر ڈرائیور کی سیکیورٹی کو بہتر بنانے کی اجازت دیتا ہے - کرنل میں ڈرائیوروں کے لیے اضافی آئسولیشن لیول بنانے کے بجائے، زیادہ محفوظ رسٹ لینگویج کا استعمال کرتے ہوئے کمپلیشن اسٹیج پر مسائل کو بلاک کرنے کی تجویز ہے۔ یہ فرض کیا جاتا ہے کہ اس طرح کے نقطہ نظر کا مطالبہ سازوسامان کے مینوفیکچررز کے ذریعہ ہوسکتا ہے جو مناسب آڈٹ کے بغیر جلدی میں ملکیتی ڈرائیور تیار کرتے ہیں۔
  • فریم ورک ڈویلپرز C2Rust سی کوڈ کو زنگ میں نشر کرنے کے لیے، خرچ کم سے کم دستی ترمیم کے ساتھ کرنل ماڈیولز کو تبدیل کرنے کے تجربات۔ نوٹ کردہ مسائل میں سے ایک کوڈ کے کرنل کے بہت سے حصوں میں استعمال ہے جو GCC ایکسٹینشنز کا استعمال کرتے ہیں جو ابھی تک C2Rust میں تعاون یافتہ نہیں ہیں۔ اس مسئلے کو حل کرنے کے لیے، C2Rust GCC کے ان لائن، کولڈ، عرف، استعمال شدہ اور سیکشن کے صفات کے لیے سپورٹ شامل کرنے کے ساتھ ساتھ ان لائن اسمبلر کی صلاحیتوں کو بڑھانے اور ان ڈھانچے کے مسائل کو حل کرنے کا ارادہ رکھتا ہے جو دونوں سیدھ میں اور پیکڈ ہیں (مثال کے طور پر، xregs_state) . اہم مسائل جن کے لیے دستی کام کی ضرورت ہوتی ہے ان میں غیر معمولی C میکرو کو Rust macros میں ترجمہ کرنے سے قاصر ہونا اور اقسام کو نئے سرے سے متعین کرنے کی ضرورت شامل ہے، کیونکہ C2Rust Libc پیکج میں C اقسام کو تعریفوں میں ترجمہ کرتا ہے، لیکن اس پیکیج کو کرنل ماڈیولز میں استعمال نہیں کیا جا سکتا۔

ماخذ: opennet.ru

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