، سيدعم مشروع Chromium استخدام مكتبات C ++ Rust التابعة لجهات خارجية في Chromium
أعلنت جوجل مؤخرًا أن الفريق الذي يقف وراء مشروع Chromium يعمل على إضافة مجموعة أدوات Rust للإنتاج إلى نظام البناء الخاص بها.
بالنسبة لأولئك الذين ما زالوا غير مدركين لـ Rust ، يجب أن يتذكروه جيدًا لأن لغة البرمجة هذه ، التي طورتها Mozilla خصيصًا للاستخدام في كتابة المتصفح ، بدأت في التسرب والقبول في العديد من المشاريع المهمة ، أحدها هو روست نواة لينكس.
سيسمح لنا ذلك بتضمين رمز Rust في ثنائي Chrome خلال العام المقبل. الهدف هو أن تبدأ صغيرة وتضع توقعات واضحة للمكتبات التي سيتم النظر فيها عندما تكون جاهزة.
من المنطقي إذن أن يبدأ كروميوم أخيرًا بتطوير هذه التقنية أيضًا. بالنسبة لجوجل، سيُحقق إدخال لغة رست في كروميوم هدف توفير طريقة أسهل وأكثر أمانًا لتطبيق "قاعدة الاثنين"، والتي تتمثل في تسريع عملية التطوير وتحسين أمان كروم. علاوة على ذلك، يُحسّن هذا من الأمان من خلال القضاء على أخطاء الذاكرة وتقليل كثافة الأخطاء البرمجية.
نحن نعلم أن C ++ و Rust يمكنهما العمل معًا بشكل جيد جدًا ، وذلك بفضل أدوات مثل cxx و autocxx bindgen و cbindgen والدبلوماسي و crubit (التجريبي). ومع ذلك ، هناك أيضًا قيود. يمكننا أن نتوقع أن يتغير شكل هذه القيود بمرور الوقت باستخدام أدوات جديدة أو محسنة ، لكن القرارات والأوصاف هنا تستند إلى الحالة الحالية للتكنولوجيا.
اتُخذ هذا القرار ضمن مبادرة لمنع ظهور أخطاء الذاكرة في قاعدة بيانات متصفح كروم. ووفقًا لإحصائيات نُشرت قبل عامين، فإن 70% من المشكلات الأمنية الخطيرة والحرجة في كروميوم ناتجة عن أخطاء في الذاكرة.
إن استخدام لغة Rust، التي تركز على إدارة الذاكرة الآمنة وتوفر إدارة تلقائية للذاكرة، سيقلل من خطر الثغرات الأمنية الناجمة عن مشكلات مثل الوصول إلى منطقة ذاكرة بعد تحريرها وتجاوز سعة المخزن المؤقت.
الهدف من جلب Rust إلى Chromium هو توفير طريقة أسهل (بدون IPC) وأكثر أمانًا (أقل تعقيدًا من C ++ بشكل عام ، ولا توجد أخطاء أمان للذاكرة في وضع الحماية) لتلبية قاعدة اثنين ، من أجل تسريع التطوير (رمز أقل للكتابة ، ومستندات تصميم أقل ، وتصحيحات أمان أقل) ولتحسين الأمان (المزيد من سطور التعليمات البرمجية مع عدم وجود أخطاء أمنية في الذاكرة ، وانخفاض كثافة أخطاء التعليمات البرمجية) في Chrome. بالإضافة إلى ذلك ، فإن الشركة واثقة من أنه يمكننا استخدام مكتبات Rust التابعة لجهات خارجية لتحقيق هذا الهدف.
في أوائل عام 2022، كان فريق Chromium قد جرب بالفعل لغة Rust ، وبعد بضعة أشهر، خلص إلى أن اللغة غير مناسبة في البداية كبديل للغة C++ للمهام المعقدة ذات التعليمات البرمجية غير المتزامنة التي تحتاج إلى العمل جنبًا إلى جنب مع التعليمات البرمجية الحالية.
لذا، من الواضح أن استخدام لغة Rust في Chromium محدود في البداية . فمن جهة، ستكون إمكانية التشغيل البيني أحادية الاتجاه فقط: من C++ إلى Rust. ومن جهة أخرى، يُسمح مبدئيًا باستخدام مكتبات خارجية فقط. تعمل هذه المكتبات كمكونات مستقلة عن مكونات Chromium الداخلية، ويجب أن تمتلك واجهة برمجة تطبيقات (API) بسيطة لأداء مهامها المحددة. سيقوم فريق Chromium بمراجعة هذه المكتبات لاحقًا.
أخيرًا، تجدر الإشارة إلى أن إضافة دعم لغة Rust في متصفح Chromium ستتيح نقل أكواد Rust إلى ملفات Chrome الثنائية بدءًا من العام المقبل. ويعود هذا القرار بالدرجة الأولى إلى اعتبارات أمنية، إذ توفر Rust مستوى أمان أعلى عند الكتابة إلى الذاكرة مقارنةً بلغة C++، كما أنها تمنع السلوكيات الضارة المحتملة، مثل قراءة المتغيرات غير المكتوبة، والوصول إلى قيم تتجاوز حدود المصفوفات، وفكّ مرجعية المؤشرات الفارغة أو غير الصالحة، واستخدام المُكرِّرات غير الصالحة.
إذا كنت مهتمًا بمعرفة المزيد، يمكنك العثور على التفاصيل في الرابط التالي.