زنگ میں لینکس کرنل کے لیے محفوظ ڈرائیور لکھنے کا فریم ورک

جوش ٹرپلٹ، جو انٹیل میں کام کرتے ہیں اور کریٹس ڈاٹ آئی او کی ترقی کی نگرانی کرنے والی کمیٹی میں شامل ہیں، اوپن سورس ٹیکنالوجی سمٹ میں بات کرتے ہوئے متعارف کرایا ایک ورکنگ گروپ جس کا مقصد سسٹم پروگرامنگ کے شعبے میں زنگ کی زبان کو C زبان کے ساتھ برابری پر لانا ہے۔

ایک ورکنگ گروپ میں جو بننے کے عمل میں ہے، زنگ کے ڈویلپرز، انٹیل کے انجینئرز کے ساتھ مل کر، اس فعالیت کی وضاحت کرتے ہوئے وضاحتیں تیار کریں گے جن کو سسٹم پروگرامنگ کے لیے Rust میں لاگو کرنے کی ضرورت ہے۔ سسٹم پروگرامنگ میں اکثر نچلی سطح کی ہیرا پھیری کی ضرورت ہوتی ہے، جیسے کہ مراعات یافتہ پروسیسر کی ہدایات پر عمل کرنا اور پروسیسر کی حالت کے بارے میں تفصیلی معلومات حاصل کرنا۔ اسی طرح کی خصوصیات میں سے جو پہلے سے زنگ کے لیے تیار کی جا رہی ہیں، بے نام ڈھانچے، یونینز، اسمبلی لینگویج انسرٹس ("asm!" میکرو) کے لیے سپورٹ اور BFLOAT16 فلوٹنگ پوائنٹ نمبر فارمیٹ نوٹ کیا گیا ہے۔

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

دوران بات چیت پرفارمنس
جوش کو یہ خیال آیا کہ لینکس کرنل میں ڈرائیورز کو زنگ زبان میں تیار کرنے کی صلاحیت شامل کی جائے، جس سے کم سے کم محنت کے ساتھ محفوظ اور بہتر ڈرائیورز بنانا ممکن ہوسکے گا، فری کرنے کے بعد میموری تک رسائی جیسے مسائل سے پاک، null پوائنٹر ڈیریفرنس اور بفر اووررنز۔

Greg Kroah-Hartman، جو لینکس کرنل کی مستحکم شاخ کو برقرار رکھنے کے ذمہ دار ہیں، نے اپنی تیاری کا اظہار کیا کہ اگر اس کے C پر حقیقی فوائد ہیں، مثال کے طور پر، یہ محفوظ فراہم کرے گا۔ کرنل API پر پابندیاں۔ اس کے علاوہ، گریگ اس فریم ورک کو صرف ایک آپشن کے طور پر سمجھتا ہے، ڈیفالٹ کے لحاظ سے فعال نہیں، تاکہ زنگ کو دانا پر تعمیراتی انحصار کے طور پر شامل نہ کیا جائے۔

معلوم ہوا کہ کئی ٹیمیں پہلے ہی اس سمت میں کام کر رہی ہیں۔ مثال کے طور پر، کمپنی "Fish in a barrel" کے ڈویلپرز تیار زنگ زبان میں لینکس کرنل کے لیے لوڈ ایبل ماڈیول لکھنے کے لیے ایک ٹول کٹ، سیکورٹی کو بڑھانے کے لیے انٹرفیس اور کرنل ڈھانچے پر تجریدی پرتوں کے سیٹ کا استعمال کرتے ہوئے۔ افادیت کا استعمال کرتے ہوئے موجودہ کرنل ہیڈر فائلوں کی بنیاد پر پرتیں خود بخود تیار ہوتی ہیں۔ بانڈجن. بجنا تہوں کی تعمیر کے لیے استعمال ہوتا ہے۔ انٹرلیئرز کے علاوہ، اسمبل شدہ ماڈیول staticlib پیکیج کا استعمال کرتے ہیں۔

متوازی۔ ترقی کر رہا ہے ایک اور پروجیکٹ ایمبیڈڈ سسٹمز اور آئی او ٹی ڈیوائسز کے لیے ڈرائیورز تیار کرنے پر مرکوز ہے، جو کرنل ہیڈر فائلوں کی بنیاد پر پرتیں بنانے کے لیے بائنڈجن کا بھی استعمال کرتا ہے۔ فریم ورک آپ کو کرنل میں تبدیلیاں کیے بغیر ڈرائیور کی سیکیورٹی کو بہتر بنانے کی اجازت دیتا ہے - کرنل میں ڈرائیوروں کے لیے اضافی الگ تھلگ لیول بنانے کے بجائے، زیادہ محفوظ رسٹ لینگویج کا استعمال کرتے ہوئے تالیف کے مرحلے پر مسائل کو بلاک کرنے کی تجویز ہے۔ یہ فرض کیا جاتا ہے کہ اس طرح کے نقطہ نظر کی مانگ ہو سکتی ہے سازوسامان کے مینوفیکچررز جو کہ مناسب آڈٹ کیے بغیر جلدی میں مالکانہ ڈرائیور تیار کرتے ہیں۔

تمام مطلوبہ فعالیت کو ابھی تک نافذ نہیں کیا گیا ہے، لیکن فریم ورک پہلے سے ہی کام کے لیے کافی موزوں ہے اور اسے Raspberry Pi 9512 بورڈ میں فراہم کردہ LAN3 USB ایتھرنیٹ کنٹرولر کے لیے ورکنگ ڈرائیور لکھنے کے لیے استعمال کیا گیا تھا۔ موجودہ smsc95xx ڈرائیور، جس کا لکھا ہوا سی زبان۔ یہ نوٹ کیا جاتا ہے کہ Rust میں ڈرائیور تیار کرتے وقت رن ٹائم اجزاء سے ماڈیول کا سائز اور اوور ہیڈ غیر اہم ہیں، جو محدود وسائل والے آلات کے لیے فریم ورک کو استعمال کرنے کی اجازت دیتا ہے۔

ماخذ: opennet.ru

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