زنگ زبان کی حمایت کے ساتھ لینکس کرنل کے لیے پیچ کا آٹھواں ورژن

Rust-for-Linux پروجیکٹ کے مصنف Miguel Ojeda نے Rust زبان میں ڈیوائس ڈرائیورز تیار کرنے کے لیے v8 اجزاء کے اجراء کی تجویز پیش کی تاکہ لینکس کرنل ڈویلپرز کے لیے غور کیا جا سکے۔ یہ پیچ کا نظر ثانی شدہ ورژن ہے، پہلے ورژن کو مدنظر رکھتے ہوئے، بغیر کسی ورژن نمبر کے شائع کیا گیا ہے۔ زنگ کی حمایت کو تجرباتی سمجھا جاتا ہے، لیکن یہ پہلے سے ہی linux-next برانچ میں شامل ہے، 5.20/6.0 کے موسم خزاں میں ضم ہونے کا دعویٰ کرتا ہے، اور کرنل سب سسٹمز پر تجریدی پرتیں بنانے کے ساتھ ساتھ ڈرائیوروں کو لکھنے پر کام شروع کرنے کے لیے کافی پختہ ہے۔ اور ماڈیولز. ترقی کو Google اور ISRG (انٹرنیٹ سیکیورٹی ریسرچ گروپ) کی طرف سے مالی اعانت فراہم کی جاتی ہے، جو Let's Encrypt پروجیکٹ کا بانی ہے اور HTTPS اور انٹرنیٹ سیکیورٹی کو بہتر بنانے کے لیے ٹیکنالوجیز کی ترقی کو فروغ دیتا ہے۔

نئے ورژن میں:

  • ٹول کٹ اور ایلوک لائبریری کی ایک قسم، غلطیوں کے پیش آنے پر "گھبراہٹ" کی ممکنہ نسل سے پاک، رسٹ 1.62 کے اجراء کے لیے اپ ڈیٹ کر دی گئی ہے۔ پہلے استعمال شدہ ورژن کے مقابلے میں، Rust ٹول کٹ نے کرنل پیچ میں استعمال ہونے والی const_fn_trait_bound فعالیت کے لیے سپورٹ کو مستحکم کیا ہے۔
  • بائنڈنگ کوڈ کو ایک علیحدہ کریٹ پیکج "بائنڈنگز" میں الگ کیا جاتا ہے، جو دوبارہ تعمیر کو آسان بناتا ہے اگر تبدیلیاں صرف مین پیکج "کرنل" میں کی جاتی ہیں۔
  • میکرو "concat_idents!" کا نفاذ ایک طریقہ کار میکرو کی شکل میں دوبارہ لکھا گیا جو concat_idents کی فعالیت سے منسلک نہیں ہے اور مقامی متغیرات کے حوالہ جات کے استعمال کی اجازت دیتا ہے۔
  • "static_asssert!" میکرو کو دوبارہ لکھا گیا ہے، جس سے کسی بھی سیاق و سباق میں مستقل کی بجائے "core::assert!()" کے استعمال کی اجازت دی گئی ہے۔
  • میکرو "build_error!" جب "RUST_BUILD_ASSERT_{WARN,ALLOW}" موڈ ماڈیولز کے لیے سیٹ کیا جاتا ہے تو کام کے لیے ڈھال لیا جاتا ہے۔
  • ترتیبات "kernel/configs/rust.config" کے ساتھ ایک علیحدہ فائل شامل کی گئی۔
  • میکرو متبادلات میں پروسیس کی جانے والی "*.i" فائلوں کا نام بدل کر "*.rsi" رکھ دیا گیا ہے۔
  • C کوڈ کے لیے استعمال ہونے والے سے مختلف اصلاحی سطحوں کے ساتھ زنگ کے اجزاء کی تعمیر کے لیے سپورٹ کو بند کر دیا گیا ہے۔
  • شامل کیا گیا fs ماڈیول، جو فائل سسٹم کے ساتھ کام کرنے کے لیے پابندیاں فراہم کرتا ہے۔ Rust میں لکھے گئے ایک سادہ فائل سسٹم کی مثال فراہم کی گئی ہے۔
  • سسٹم کیو کے ساتھ کام کرنے کے لیے ورک کیو ماڈیول شامل کیا گیا (work_struct اور workqueue_struct کرنل ڈھانچے پر پابندیاں فراہم کرتا ہے)۔
  • kasync ماڈیول کی ترقی غیر مطابقت پذیر پروگرامنگ طریقوں (async) کے نفاذ کے ساتھ جاری رہی۔ زنگ میں لکھے ہوئے بنیادی سطح کے TCP سرور کی ایک مثال شامل کی گئی۔
  • [تھریڈڈ]ہینڈلر کی اقسام اور [تھریڈڈ]رجسٹریشن` کی اقسام کا استعمال کرتے ہوئے رسٹ زبان میں رکاوٹوں کو ہینڈل کرنے کی صلاحیت شامل کی گئی۔
  • پروسیجرل میکرو "#[vtable]" کو شامل کیا گیا تاکہ فنکشن پوائنٹرز کے ٹیبلز کے ساتھ کام کرنا آسان ہو، جیسے file_operations کا ڈھانچہ۔
  • دو طرفہ منسلک فہرستوں کا نفاذ شامل کیا گیا "unsafe_list::List"۔
  • RCU (ریڈ-کاپی-اپ ڈیٹ) اور گارڈ ٹائپ کے لیے ابتدائی سپورٹ شامل کیا گیا تاکہ یہ چیک کیا جا سکے کہ آیا ریڈ لاک موجودہ تھریڈ سے منسلک ہے۔
  • کرنل تھریڈز بنانے اور خود بخود شروع کرنے کے لیے Task::spawn() فنکشن کو شامل کیا گیا۔ Task::wake_up() طریقہ بھی شامل کیا۔
  • ایک تاخیری ماڈیول شامل کیا گیا جو آپ کو تاخیر (msleep() پر ایک ریپر) استعمال کرنے کی اجازت دیتا ہے۔

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

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

ماخذ: opennet.ru

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