لینوس توروالدز هسته لینوکس را به استاندارد C11 مدرن تر ارتقا می دهد

همه ما می دانیم که لینوکس به زبان C نوشته شده است. چیزی که احتمالاً نمی دانید این است که این سیستم عامل بر اساس یکی از استانداردهای قدیمی زبان C، نسخه 1989 (C89) است. این استاندارد با نام‌های ANSI X3.159-1989 یا ANSI C نیز شناخته می‌شود. لینوس توروالدز قصد دارد هسته لینوکس را به استاندارد جدیدتر C11 2011 ارتقا دهد.

ZDNet اشاره می کند که انتقال هسته لینوکس از C89 به C11 آنقدرها که به نظر می رسد عالی نیست. C89 هنوز تقریباً در سطح جهانی پشتیبانی می شود. از آنجایی که هر کامپایلر C با نسخه های قبلی سازگار است، مشکلی در کامپایل یا اجرای برنامه های مبتنی بر C89 نخواهید داشت. بنابراین، یک کامپایلر سازگار با C11 مشکلی در اجرای کدهای قدیمی C89 نخواهد داشت.

این تغییر زمان مورد توجه توروالدز قرار گرفت و او به منظور اصلاح یک مشکل امنیتی احتمالی در اجرای عملکردهای اولیه فهرست ارتباطات هسته ای، مشکل دیگری را در تنظیم امنیتی آشکار کرد. هنگام حل این مشکل، توروالدز متوجه شد که نسخه تکراری ارسال شده به ماکروهای لیست پیش نمایش C99 باید در محدوده خارج از دایره اعلام شود.

Thorolds در مورد لیست پستی هسته لینوکس (LKML) گفت:

تمام دلیلی که ممکن است این نوع خطای باورنکردنی رخ دهد این است که ما در طول تاریخ متغیرهای سبک C99 “اعلان متغیر چرخه” را نداشته ایم. بنابراین list_for_each_entry () و هر چیز دیگری معمولا همیشه آخرین ورودی HEAD را نشان می دهد. زیرا نمی توانیم یک متغیر تکرارشونده را در خود حلقه اعلام کنیم.

حالا جواب چیه؟ در نهایت، از C89 به استاندارد جدیدتر C مهاجرت کنید. زیرا این تغییر از بروز چنین مشکلی جلوگیری می کند. به همین دلیل وقت آن است که به استاندارد C99 نگاهی بیندازیم. این استاندارد که بیش از 20 سال قدمت دارد، به اندازه کافی جدید است و امکان اعلام متغیرها را در سطح بلوک فراهم می کند.

مقالات مرتبط:

آراند برگمن، توسعه دهنده هسته لینوکس، تایید کرد که امکان ارتقا به استاندارد جدید C وجود دارد و اعلام کرد که امکان انتقال به استاندارد C11 2011 وجود دارد. از آنجایی که C99 هرگز محبوبیت زیادی نداشته و C11 پشتیبانی از استاندارد امنیتی چند رشته ای را در این زبان معرفی کرده است، استفاده از این استاندارد جدیدتر گام مثبتی است.

  دانشمندان توسط سوراخ های مرموز در انتهای اقیانوس اطلس گیج شده اند

استفاده از استاندارد جدید C11 آسان خواهد بود. در حال حاضر، حداقل نسخه کامپایلر C هسته لینوکس، GCC 5.1، از C11 پشتیبانی می کند.

توروالدز تصمیم گرفت پس از اطمینان از اینکه استاندارد جدید C در هسته لینوکس به خوبی اجرا می شود، این حرکت را نهایی کند. او قصد دارد این تغییر را در نسخه 5.18 یکپارچه آزمایش کند. از آنجایی که چارچوب یکپارچه سازی 5.18 تقریبا کامل شده است، احتمالاً در ماه مارس شاهد کد C11 در هسته لینوکس خواهیم بود.

جاناتان کوربت، یکی دیگر از توسعه دهندگان هسته لینوکس، هشدار داد که ممکن است با انتشار و انتشار نسخه 5.18 اتفاقات زیادی بیفتد. انتقال به نسخه جدیدتر استاندارد زبان C ممکن است تعجب آور باشد. کوربت معتقد است که اگر همه چیز خوب پیش برود، تغییر C11 در نسخه بعدی هسته اعمال خواهد شد.

دیدگاهتان را بنویسید