Mark Russinovich، دفتر فناوری (CTO) Microsoft Azure، میگوید که توسعهدهندگان باید از استفاده از زبانهای برنامهنویسی C یا C++ در پروژههای جدید خودداری کنند و در عوض از Rust به دلیل نگرانیهای امنیتی و قابلیت اطمینان استفاده کنند.
Rust که نسخه 1.0 را در سال 2020 منتشر کرد و در موزیلا متولد شد، اکنون در پروژه متن باز اندروید (AOSP)، در متا، در خدمات وب آمازون، در مایکروسافت برای بخش هایی از Windows و Azure، در هسته لینوکس استفاده می شود. و در خیلی جاهای دیگر
مهندسان به «ضمانتهای ایمنی حافظه» آن اهمیت میدهند، که نیاز به مدیریت دستی حافظه برنامه را کاهش میدهد و به نوبه خود، خطر نقصهای امنیتی مرتبط با حافظه را کاهش میدهد که پروژههای بزرگ نوشتهشده با «ناامن حافظه» C یا C++ را کاهش میدهد، که شامل کروم نیز میشود. اندروید، هسته لینوکس و ویندوز.
همچنین: محبوب ترین زبان های برنامه نویسی و مکان یادگیری آنها
مایکروسافت در سال 2019 پس از فاش کردن 70 درصد از وصلههای آن در 12 سال گذشته، رفع اشکالات ایمنی حافظه بود که عمدتاً به دلیل نگارش ویندوز عمدتاً به زبان C و C++ بود. تیم کروم گوگل در سال 2020 یافته های خود را بررسی کرد و فاش کرد که 70 درصد از تمام اشکالات امنیتی جدی در پایگاه کد کروم مربوط به مدیریت حافظه و اشکالات ایمنی است. بیشتر در C++ نوشته شده است.
“مگر اینکه اتفاق عجیبی بیفتد [Rust] توروالدز نوشت و ظاهراً به بحث طولانی در مورد تبدیل شدن Rust به زبان دوم C برای هسته لینوکس پایان داد.
تنها ویژگی Azure CTO در مورد استفاده از Rust این است که برای پروژههای جدیدی که نیاز به یک زبان جمعآوری نشده (GC) دارند، نسبت به C و C+ ارجحیت داشت. موتورهای GC مدیریت حافظه را مدیریت می کنند. Google’s Go یک زبان جمع آوری زباله است، در حالی که پروژه Rust ترویج می کند که Rust نیست. مهندسان AWS به دلیل کارایی که بدون GC ارائه می دهد، Rust over Go را دوست دارند.
“در مورد زبانها، زمان آن رسیده است که شروع پروژههای جدید در C/C++ را متوقف کنیم و از Rust برای سناریوهایی استفاده کنیم که زبان غیر GC مورد نیاز است. به خاطر امنیت و قابلیت اطمینان، صنعت باید آن زبانها را منسوخ اعلام کند.” روسینوویچ نوشت.
Rust جایگزینی امیدوارکننده برای C و C++ است، بهویژه برای برنامهنویسی در سطح سیستم، پروژههای زیرساختی، توسعه نرمافزار تعبیهشده و موارد دیگر – اما نه در همه جا و نه در همه پروژهها.
در واقع، روسینوویچ بعدا اضافه شد: “مقدار عظیمی از C/C++ وجود دارد که برای چندین دهه (یا بیشتر) حفظ و تکامل مییابد. دیشب یک ویژگی را برای Handle کدنویسی کردم و به تقریباً 85000 خط کد Sysinternals C/C++ که نوشتهام اضافه کردم. با این حال، من برای ابزارهای جدید نسبت به Rust تعصب خواهم داشت.”
Rust مطمئناً رو به جلو است و به احتمال زیاد به زودی در هسته لینوکس قرار خواهد گرفت.
پروژه منبع باز Android (AOSP)، یک توزیع لینوکس، در آوریل 2021 استفاده از Rust را روی کدهای جدید آغاز کرد اما پایه کد C/C++ خود را در جای خود باقی گذاشت. آن ماه، AOSP نیز تماس های پشتیبانی شده برای Rust به عنوان گزینه ای برای کد جدید در هسته لینوکس.
همچنین: نحوه اجرای آسان وب سایت ها به عنوان برنامه در لینوکس
متا اخیرا Rust را به عنوان یک زبان اصلی پشتیبانی شده در سمت سرور در کنار C++ تبلیغ کرده است. AWS در Rust برای نرم افزار زیرساخت سرمایه گذاری می کند. مهندسان Azure از آن برای ساخت ابزارهای ابری برای آزمایش ماژول های WebAssembly در Kubernetes استفاده کرده اند. از طرف دیگر، علیرغم علاقه به Rust، تیم Chrome برای آینده قابل پیشبینی به C++ گره خورده است. آنها گفتند که صرفاً تغییر به Rust بخش قابل توجهی از آسیب پذیری های امنیتی را برای سال ها از بین نمی برد. در عوض، Chrome امنیت حافظه را به پایه کد ++C خود آورده است.
همچنین، Rust نباید به عنوان یک گلوله نقره ای برای تمام عادات بدی که توسعه دهندگان هنگام کدنویسی در C یا C++ انجام می دهند، در نظر گرفته شود.
باب رودیس، محقق امنیت سایبری برای GreyNoise Intelligence که قبلا با Rapid7 کار می کرد، اشاره شد توسعه دهندگان می توانند همان عادات امنیتی بد را به Rust منتقل کنند.
با توجه به آنچه (زمان/پول/مردم/خدمات) برای ایمن کردن پروژه های C/C++ واقعی با هر سرعتی لازم است، من تمایل دارم [with Russinovich]. با گفتن این موضوع، می توان همان شیوه های بد را به Rust نیز آورد.»
استیون جی وان نیکولز از ZDNet به طور کلی مورد توافق قرار گرفت با این احساس:
همانطور که دیگران گفته اند، شما می توانید “ایمن” را در C یا C++ بنویسید، اما مهم نیست که از چه لهجه ای در Rust استفاده می کنید، بسیار سخت تر است. بسیاری از مشکلات حافظه قدیمی.”
منبع: https://www.zdnet.com/article/programming-languages-its-time-to-stop-using-c-and-c-for-new-projects-says-microsoft-azure-cto/#ftag=RSSbaffb68