أبرز النقاط
- مشروع crustc يحوّل مترجم rustc 1.98.0 بالكامل إلى 46 مليون سطر من كود C قابل للبناء بـ GCC
- الهدف الأساسي دعم الأجهزة القديمة والمنصات التي تملك مترجم C فقط دون دعم LLVM أو GCC الحديث
- المشروع يستخدم تقنية witness programs للتكيّف مع خصوصيات كل مترجم C ومنصة
في إنجاز تقني لافت، نجح المطور FractalFir في تحويل مترجم Rust الرسمي (rustc) بالكامل إلى 46 مليون سطر من كود لغة C، ليصبح قابلاً للبناء باستخدام GCC وأداة make فقط. المشروع المسمى crustc ليس مجرد تجربة أكاديمية، بل مترجم Rust وظيفي يستطيع ترجمة الشيفرة وبناء المكتبات القياسية core وalloc وstd.
ما الذي يحققه مشروع crustc فعلياً؟
المشروع هو عرض توضيحي لسلسلة أدوات أوسع تُدعى cilly، وهي مكتبة Rust ومكوّن إضافي لمترجم rustc يتيح ترجمة أي كود Rust إلى C لمنصات متعددة. ما يُعرض هنا هو المترجم نفسه وهو يُترجم ذاته — أي أن rustc المكتوب بـ Rust أصبح الآن كود C خالصاً يمكن بناؤه بأي مترجم C متوافق.
الإصدار المُحوَّل هو rustc 1.98.0-nightly بتاريخ 16 يونيو 2026، وقد بُني على نظام ARM64 Linux باستخدام GCC 13.3.0. المشروع لا يزال يعتمد على مكتبة LLVM للتوليد النهائي للكود (libLLVM.so)، لكن المترجم نفسه — بكل تعقيداته من فحص الأنواع ومدقق الاستعارة وطبقة MIR — بات كود C.
لماذا تحويل Rust إلى C؟
الهدف الرئيسي هو دعم الأجهزة القديمة والمنصات النادرة التي لا تملك دعماً لـ LLVM أو GCC الحديث، لكنها تملك مترجم C. كلما انتقل مشروع من C إلى Rust، يُطرح سؤال مشروع: ماذا عن المنصات التي لا تدعم Rust؟ مشروع cilly يهدف لإزالة هذا العائق نهائياً.
- دعم المنصات التي تملك مترجم C فقط دون LLVM أو rustc جاهز
- حل مشكلة التمهيد (bootstrapping) حيث تحتاج Rust لتبني Rust
- تمكين الترجمة عبر الشبكة للمنصات دون مترجمات متقاطعة
كيف يتكيّف cilly مع مترجمات C المختلفة؟
الابتكار الجوهري في cilly هو قدرته على التكيّف مع خصوصيات كل مترجم C ومنصة. يولّد برامج شاهدة (witness programs) تختبر ما يدعمه المترجم المستهدف، مثل دعم _Thread_local أو أحجام الأنواع ومحاذاتها وترميز الحروف وصيغ الأعداد الصحيحة.
هذا يعني أن الكود المولَّد مخصص لكل مترجم ومنصة — لا يمكنك أخذ كود C المولَّد لـ ARM64 وتشغيله على riscv32 مباشرة، لكن يمكنك توليد كود مخصص لـ riscv32. المطور يحرص على عدم افتراض أي شيء خارج معيار ANSI C، مع حلول بديلة لقواعد المعايير الحديثة مثل strict aliasing.
الشفافية الشبكية: ترجمة Rust عن بُعد
ميزة لافتة في cilly هي الشفافية الشبكية: يمكن للأداة التواصل مع مترجمات C عبر TCP، وربما لاحقاً عبر UART. هذا يحل مشكلة المنصات التي لا تملك مترجمات متقاطعة — تبني خادماً صغيراً بلغة C على منصتك النادرة، وتشغّل rustc على Linux عادي، وتدع cilly يتواصل عبر الشبكة.
المطور نجح فعلاً في ترجمة برامج Rust صغيرة لنظام Plan9 على معالج x86 داخل آلة افتراضية، بينما يعمل rustc على ARM64 Linux. البرنامج المترجَم يعمل ويطبع Hello, world! على Plan9.
توافق ABI وتوليد Makefiles
الكود المولَّد من cilly متوافق غالباً مع ABI الخاص بـ rustc العادي، مع استثناءات على بعض المنصات مثل ARM64 حيث يختار rustc واجهة ثنائية غير قابلة للتمثيل من C. كذلك يستطيع cilly توليد ملفات Makefile تلقائياً من علامات مضمنة في ملفات الكائنات، ما يتيح بناء Rust بمترجم C وmake فقط.
رأي Logicity
مشروع crustc يمثل خطوة جريئة نحو فك ارتباط Rust بسلسلة أدوات LLVM الثقيلة، وهو توجه قد يفتح أبواباً لقطاعات مثل الأنظمة المدمجة والصناعية في المنطقة حيث تسود معالجات قديمة أو نادرة. المشاريع المنافسة مثل mrustc (مترجم Rust مكتوب بـ C++ للتمهيد) تركز على حل مشكلة التمهيد فقط، بينما cilly يذهب أبعد بدعم الترجمة لمنصات عشوائية. إذا نضج المشروع، قد نرى Rust تصل لأجهزة لم تكن واردة سابقاً.
الأسئلة الشائعة
هل يمكن بناء crustc دون LLVM؟
حالياً لا. المترجم نفسه تحوّل إلى C، لكنه يعتمد على مكتبة LLVM لتوليد الكود الآلي النهائي. المشروع يركز على ترجمة المترجم لا على استبدال LLVM.
ما الفرق بين crustc ومشروع mrustc؟
mrustc مترجم Rust مكتوب بـ C++ هدفه حل مشكلة التمهيد فقط. crustc/cilly أداة تترجم أي كود Rust إلى C لمنصات متعددة، بما في ذلك المترجم نفسه.
هل يمكن استخدام cilly لترجمة مشاريع Rust عادية إلى C؟
نعم، هذا الهدف الأساسي. crustc مجرد عرض توضيحي، والأداة الكاملة cilly تترجم أي كود Rust إلى C لمنصات مخصصة.
لماذا توسّع الكود من 1.5 مليون سطر Rust إلى 46 مليون سطر C؟
الترجمة الآلية تولّد كوداً مطولاً لضمان صحة الدلالات، مع تكرار وتوسيع لمعالجة الفروقات بين اللغتين.
هل تحتاج مساعدة في التطبيق؟
إذا كنت تعمل على مشروع يستهدف منصات مدمجة أو قديمة وتفكر في استخدام Rust، تواصل مع فريق Logicity للاستشارة حول خيارات سلاسل الأدوات المناسبة.
عمر حسن
كاتب تقني وابتكار
أُنتِج هذا المقال بمساعدة الذكاء الاصطناعي وراجعه فريق التحرير في لوجيسيتي. اعرف المزيد في سياسة التحرير.
مقالات ذات صلة
تصفح الكلاقرأ أيضاً

مايكروسوفت تدمج تطبيقات Copilot وتطلق وكلاء AutoPilot: السباق نحو التطبيق الفائق للذكاء الاصطناعي
تستعد مايكروسوفت لإطلاق نسخة مُعاد تصميمها كلياً من مساعدها الذكي Copilot في أغسطس المقبل، وفقاً لمذكرة داخلية اطلعت عليها The Information. الخطوة الأبرز: دمج التطبيقين المنفصلين للمستهلكين والمؤسسات






