لینکس کرنل 5.18 سی لینگویج معیاری C11 کے استعمال کی اجازت دینے کا ارادہ رکھتا ہے۔

لنکڈ لسٹ کوڈ میں سپیکٹر سے متعلقہ مسائل کو حل کرنے کے لیے پیچ کے ایک سیٹ پر بحث کرتے ہوئے، یہ واضح ہو گیا کہ اگر سی کوڈ جو معیار کے نئے ورژن کے ساتھ مطابقت رکھتا ہے، کو دانا میں داخل کرنے کی اجازت دی جائے تو مسئلہ زیادہ خوبصورتی سے حل ہو سکتا ہے۔ فی الحال، شامل کردہ کرنل کوڈ کو ANSI C (C89) تفصیلات کی تعمیل کرنی چاہیے، جو 1989 میں تشکیل دی گئی تھی۔

کوڈ میں سپیکٹر سے متعلق ایک مسئلہ لوپ کے بعد الگ سے متعین ایٹریٹر کے مسلسل استعمال کی وجہ سے پیدا ہوا — ایک میکرو کو لنکڈ لسٹ کے عناصر پر اعادہ کرنے کے لیے استعمال کیا جاتا ہے، اور چونکہ لوپ ایٹریٹر کو اس میکرو میں منتقل کیا جاتا ہے، یہ خود لوپ کے باہر بیان کیا گیا ہے اور لوپ کے بعد دستیاب رہتا ہے۔ C99 اسٹینڈرڈ کو استعمال کرنے سے لوپ ویری ایبلز کو for() بلاک میں بیان کرنے کی اجازت ملے گی، جو بغیر کسی کام کے حل کیے مسئلہ کو حل کر دے گی۔

Linus Torvalds نے نئی تصریحات کے لیے تعاون کو نافذ کرنے کے خیال سے اتفاق کیا اور 5.18 میں شائع ہونے والے C11 معیار کو استعمال کرنے کے لیے 2011 کرنل کو منتقل کرنے کی تجویز پیش کی۔ ابتدائی جانچ کے دوران، نئے موڈ میں GCC اور بجنا کی اسمبلی بغیر کسی انحراف کے گزر گئی۔ اگر مزید مکمل جانچ کے دوران کوئی غیر متوقع مسئلہ پیدا نہیں ہوتا ہے تو، 5.18 کرنل بلڈ اسکرپٹس میں '--std=gnu89' آپشن کو '--std=gnu11 -Wno-shift-negative-value' سے بدل دیا جائے گا۔ C17 معیار کے استعمال کے امکان پر بھی غور کیا گیا، لیکن اس صورت میں GCC کے کم از کم تعاون یافتہ ورژن کو بڑھانا ضروری ہوگا۔ C11 سپورٹ کی شمولیت GCC ورژن (5.1) کی موجودہ ضروریات میں فٹ بیٹھتی ہے۔

ماخذ: opennet.ru

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