نواة Linux 5.18 تخطط للسماح باستخدام معيار اللغة C11

أثناء مناقشة مجموعة من التصحيحات لإصلاح المشكلات المتعلقة بـ Spectre في كود القائمة المرتبطة، أصبح من الواضح أنه يمكن حل المشكلة بشكل أكثر رشاقة إذا تم السماح بدخول كود C الذي يتوافق مع إصدار أحدث من المعيار إلى النواة. في الوقت الحالي، يجب أن يتوافق رمز النواة المضاف مع مواصفات ANSI C (C89) التي تم تشكيلها في عام 1989.

حدثت مشكلة متعلقة بـ Spectre في التعليمات البرمجية بسبب الاستخدام المستمر لمكرر محدد بشكل منفصل بعد الحلقة - يتم استخدام ماكرو للتكرار عبر عناصر القائمة المرتبطة، ونظرًا لتمرير مكرر الحلقة إلى هذا الماكرو، فإنه تم تعريفه خارج الحلقة نفسها ويظل متاحًا بعد الحلقة. إن استخدام معيار C99 سيسمح بتحديد متغيرات الحلقة في كتلة for()، مما قد يحل المشكلة دون الحاجة إلى التوصل إلى حلول بديلة.

وافق لينوس تورفالدس على فكرة تنفيذ الدعم للمواصفات الأحدث واقترح نقل النواة 5.18 لاستخدام معيار C11، الذي تم نشره في عام 2011. أثناء الاختبار الأولي، مرت الجمعية في دول مجلس التعاون الخليجي و Clang في الوضع الجديد دون انحرافات. إذا لم تظهر أي مشكلات غير متوقعة أثناء إجراء اختبار أكثر شمولاً، فسيتم استبدال الخيار '--std=gnu5.18' في البرامج النصية لبناء kernel 89 بـ '--std=gnu11 -Wno-shift-negative-value'. تم أيضًا النظر في إمكانية استخدام معيار C17، ولكن في هذه الحالة سيكون من الضروري زيادة الحد الأدنى للإصدار المدعوم من دول مجلس التعاون الخليجي. يتناسب تضمين دعم C11 مع المتطلبات الحالية لإصدار دول مجلس التعاون الخليجي (5.1).

المصدر: opennet.ru

إضافة تعليق