مارک روسینوویچ (Mark Russinovich)، مدیر ارشد فناوری (Chief Technology Officer) مایکروسافت آژور (Microsoft Azure)، در سخنرانی اخیر خود در کنفرانس Rust Nation UK به تشریح عوامل موثر در پذیرش زبان برنامهنویسی Rust، ارائه نمونههای کاربردی از استفاده Rust در محصولات مایکروسافت و تشریح تلاشهای مداوم برای تسریع مهاجرت از زبانهای C/C++ به Rust در مایکروسافت با بهرهگیری از هوش مصنوعی مولد (Generative AI) پرداخت. این سخنرانی برای متخصصان و توسعهدهندگان مایکروسافت از اهمیت ویژهای برخوردار است، زیرا نشاندهنده جهتگیریهای آتی این شرکت در استفاده از فناوریهای جدید و تاثیر آن بر اکوسیستم مایکروسافت است.
انگیزههای اصلی برای توصیه به استفاده از Rust
به گفته روسینوویچ، انگیزه اصلی برای توصیه به استفاده از Rust از یک بررسی دقیق آسیبپذیریهای امنیتی نشات گرفته است. بررسیهای انجام شده در مراکز پاسخگویی امنیتی مایکروسافت (Microsoft security response centers) نشان میدهد که در طول 10 سال گذشته، 70 درصد از آسیبپذیریهای موجود در تمامی محصولات مایکروسافت، ناشی از استفاده ناامن از حافظه (unsafe use of memory) بهویژه در زبان C++ بوده است. این روند همچنان ادامه دارد و مهاجمان سایبری به طور فزایندهای از این نوع مشکلات بهره میبرند. علاوه بر این، مشکلات ناشی از این آسیبپذیریها منجر به بروز حوادث مختلف در سیستمهای مایکروسافت شده است.
سایر شرکتهای بزرگ فناوری اطلاعات و سازمانهای امنیتی نیز به نتایج مشابهی دست یافتهاند. تیم تحقیقات امنیتی گوگل (Google’s security research team)، Project Zero، گزارش داده است که از 58 آسیبپذیری صفر-روزه (0-days) مشاهده شده در یک سال، 39 مورد (معادل 67 درصد) مربوط به آسیبپذیریهای تخریب حافظه (memory corruption vulnerabilities) بوده است. این نوع آسیبپذیریها برای دههها روشی استاندارد برای حمله به نرمافزارها بودهاند و همچنان نیز مهاجمان از این طریق موفق به نفوذ میشوند. شرکت موزیلا (Mozilla) نیز چند سال پیش تخمین زد که 74 درصد از باگهای امنیتی شناسایی شده در کامپوننت استایل (style component) مرورگر فایرفاکس (Firefox) میتوانست با استفاده از زبان Rust از بین برود. در واقع، خالق زبان Rust، گریدان هوار (Graydon Hoare)، در یکی از نخستین ارائههای خود در اجلاس سالانه موزیلا (Mozilla Annual Summit) در سال 2010 استدلال کرد که C++ تقریباً از هر نظر ناامن است و فاقد سیاستهای مالکیت (ownership policies)، کنترل همروندی (concurrency control) و حتی قابلیت ثابت نگه داشتن مقادیر ثابت (const values) است.
پروژه "ابتکار آینده امن" (Secure Future Initiative) مایکروسافت، که روسینوویچ آن را به رخنه (breaches) انجام شده توسط دو عامل دولتی مرتبط میداند، بر گسترش استفاده از زبانهای برنامهنویسی با حافظه امن (memory-safe languages) تاکید دارد. مایکروسافت اخیراً مبلغ 1 میلیون دلار به بنیاد Rust (Rust Foundation) اهدا کرده است تا از اولویتهای حیاتی زبان و پروژههای Rust حمایت کند. این نشاندهنده تعهد جدی مایکروسافت به این زبان و اکوسیستم آن است.
نمونههای استفاده از Rust در محصولات مایکروسافت
روسینوویچ در ادامه سخنان خود، نمونههای دقیقی از کاربرد Rust در محصولات مایکروسافت ارائه داد. در سیستم عامل ویندوز (Windows)، Rust در نرمافزارهای حیاتی از نظر امنیتی مورد استفاده قرار میگیرد. این موارد شامل توسعه میانافزار (firmware development) با پروژه Mu (Project Mu)، اجزای هسته (kernel components)، یک کتابخانه رمزنگاری (cryptography library) مانند پشتیبانی از rustls symcrypt، و اجزای جانبی (ancillary components) مانند DirectWrite Core میشود. استفاده از Rust در این بخشهای حساس، به طور قابل توجهی سطح امنیت و پایداری سیستم عامل را ارتقا میدهد.
در مجموعه نرمافزاری آفیس (Office)، Rust در برخی از بخشهای حیاتی از نظر کارایی (performance-critical areas) به کار گرفته شده است. پیادهسازی الگوریتم جستجوی معنایی (semantic search algorithm) در آفیس با استفاده از Rust، که بر روی CosmosDB و PostgreSQL برای مشتریان ارائه شده است، عملکرد و کارایی حافظه بهتری نسبت به نسخه C++ آن نشان داده است. این امر منجر به یک دستاورد قابل توجه در جستجوهای برداری در مقیاس بزرگ (large-scale vector searches) شده است.
پس از صدور دستورالعملی مبنی بر عدم استفاده از C++ در توسعه سیستمهای جدید در آژور (Azure)، Rust در چندین نرمافزار مرتبط با آژور به کار گرفته شده است. Caliptra یک همکاری صنعتی برای توسعه میانافزار امن سرورهای ابری (secure cloud server firmware) است که اجزای کلیدی میانافزار آن به طور کامل با Rust نوشته شده و به صورت متنباز (open-sourced) منتشر شده است. Azure Integrated HSM یک تراشه امنیتی داخلی جدید است که از سال 2025 در تمامی سرورهای جدید مستقر خواهد شد و میانافزار و کتابخانههای مهمان (guest libraries) آن با Rust نوشته شدهاند تا بالاترین استانداردهای امنیتی برای کلیدهای رمزنگاری (cryptographic keys) تضمین شود. روسینوویچ همچنین به Azure Boost agents، Hyper-V (هایپروایزر مایکروسافت)، OpenVMM (یک ماشین مجازی نظارتی (Virtual Machine Monitor) ماژولار و چندسکویی که اخیراً متنباز شده است) و Hyperlight به عنوان پروژههایی اشاره کرد که به طور جزئی یا کامل با Rust نوشته شدهاند. این موارد نشاندهنده گسترش روزافزون استفاده از Rust در زیرساختهای ابری مایکروسافت است.
بازخورد توسعهدهندگان در مورد Rust در مایکروسافت
بازخورد توسعهدهندگان در مایکروسافت در مورد استفاده از Rust عموماً مثبت بوده است، اما برخی نکات منفی نیز مطرح شده است. از جنبههای مثبت، توسعهدهندگان از این موضوع رضایت داشتند که اگر کد Rust کامپایل شود، معمولاً همانطور که انتظار میرود کار میکند و این امر منجر به تکرار سریعتر (faster iteration) در فرآیند توسعه میشود. کاهش اصطکاک در توسعه (Reduced friction in development) انگیزه بیشتری برای نوشتن تستها ایجاد میکند و توسعهدهندگان نسبت به مشکلات مدیریت حافظه (memory management pitfalls) آگاهتر میشوند. اکوسیستم Rust و Cargo به دلیل مدیریت وابستگیها (dependency management) مورد تقدیر قرار گرفتهاند. اغلب اوقات افزایش کارایی (performance increases) مشاهده میشود (اگرچه هدف اصلی همیشه این نبوده است). باگهای مربوط به شرایط مسابقه دادهای (Data-race-related concurrency bugs) کاهش یافته و آسیبپذیریهای مربوط به ایمنی حافظه (Memory-safety-related vulnerabilities) به طور قابل توجهی کم شدهاند.
از جنبههای منفی، توسعهدهندگان اشاره کردهاند که تعامل با C++ (C++ interop) همچنان دشوار است. منحنی یادگیری اولیه (initial learning curve) برای Rust به عنوان یک چالش بزرگ تلقی میشود. پیوند پویا (Dynamic linking) نیز یک مسئله است. وابستگی به برخی از ویژگیهای غیر پایدار Rust (non-stabilized Rust features) نگرانیهایی را ایجاد کرده است. ادغام Cargo با سیستمهای ساخت بزرگ سازمانی (larger enterprise build systems) نیازمند تلاش است. رابط تابع خارجی (Foreign Function Interface - FFI) حتی در Rust نیز به سختی و با ریسک امنیتی انجام میشود. ابزارهای توسعه (Tooling) در مقایسه با سایر زبانها هنوز عقبتر هستند. این بازخوردها نشان میدهد که در کنار مزایای قابل توجه Rust، چالشهایی نیز در مسیر پذیرش گسترده آن در یک سازمان بزرگ مانند مایکروسافت وجود دارد که نیازمند توجه و راهکار هستند.
تلاشهای مایکروسافت برای تسریع مهاجرت به Rust
روسینوویچ در ادامه به تشریح تلاشهای مایکروسافت برای تسریع مهاجرت کد قدیمی C/C++ (C/C++ legacy code) به Rust پرداخت. یکی از این زمینهها، کتابخانههای رمزنگاری تایید شده (verified crypto libraries) است که از تکنیکهای تایید رسمی (formal verification techniques) برای کد C استفاده شده و سپس به Rust امن (safe Rust) تبدیل میشوند (همانطور که در مقاله "Compiling C to Safe Rust, Formalized" توضیح داده شده است). مایکروسافت همچنین در حال بررسی استفاده از مدلهای زبانی بزرگ (large language models) برای ترجمه خودکار کد است. این تلاشها نشاندهنده رویکرد فعال مایکروسافت در بهرهگیری از فناوریهای نوین برای تسهیل و تسریع فرآیند جایگزینی C/C++ با Rust است.
جمعبندی و چشمانداز آینده Rust در مایکروسافت
روسینوویچ در پایان سخنان خود، بر تعهد قوی مایکروسافت به Rust در سراسر این شرکت تاکید کرد و بر بلوغ (maturity) و پذیرش روزافزون Rust تاکید نمود. او اشاره کرد که با وجود ظهور زبانهای برنامهنویسی جدیدتر، Rust به دلیل سابقه بیش از 10 ساله، اکوسیستم بالغ و ابزارهای توسعه پیشرفته، جایگاه مستحکمی پیدا کرده است و جایگزینی آن در کوتاهمدت بعید به نظر میرسد. به گفته وی، مایکروسافت به طور کامل از Rust حمایت میکند. روسینوویچ همچنین به مخاطبان توصیه کرد تا برای درک بهتر جزئیات فنی و نمونههای عملی،
سخنرانی کامل او را در یوتیوب (YouTube) مشاهده کنند. کنفرانس Rust Nation UK نیز به عنوان یک رویداد مهم برای جامعه Rust و توسعهدهندگان در تمامی سطوح معرفی شد. این کنفرانس سالانه شامل کارگاهها، سخنرانیها و آموزشهای تخصصی در حوزه زبان Rust است.