كل المقالات

مترجم Roc يُعيد كتابة 300 ألف سطر من Rust إلى Zig ويحقق التكافؤ الوظيفي الكامل

عمر حسن18 يوليو 2026 في 6:36 م5 دقيقة للقراءة

أبرز النقاط

  • فريق Roc أكمل إعادة كتابة 300 ألف سطر من Rust إلى Zig خلال 487 يوماً
  • المترجم الجديد ينتج ملفات WebAssembly أصغر بأكثر من النصف مقارنة بالأصلي
  • الميزة الجديدة الأبرز: تحميل الكود الساخن Hot Code Loading أثناء التطوير

في خطوة تسير عكس التيار السائد في عالم برمجة الأنظمة، أعلن فريق لغة البرمجة Roc عن إتمام إعادة كتابة مترجمهم بالكامل من لغة Rust إلى Zig، محققين التكافؤ الوظيفي الكامل مع المترجم الأصلي بعد رحلة استمرت 487 يوماً. هذا الإنجاز يأتي في توقيت لافت، إذ أعلن مشروع Bun مؤخراً عن مسار معاكس تماماً: الانتقال من Zig إلى Rust.

Advertisements

لماذا تخلّى فريق Roc عن Rust لصالح Zig؟

Roc هي لغة برمجة وظيفية أنشأها ريتشارد فيلدمان، العضو السابق في فريق Elm الأساسي، بهدف بناء تطبيقات سريعة وموثوقة. القرار بالانتقال من Rust إلى Zig ليس مجرد تفضيل تقني عابر، بل يعكس فلسفة مختلفة في التعامل مع تطوير المترجمات. فـ Zig تُقدّم تحكماً صريحاً في تخصيص الذاكرة دون تدفق تحكم خفي، وهو ما يراه فريق Roc أنسب لبناء مترجم من نموذج Rust الأكثر صرامة في إدارة الذاكرة.

الفارق الجوهري بين إعادة كتابة Roc وإعادة كتابة Bun يكمن في الهدف: فريق Bun أجرى نقلاً مباشراً استغرق 11 يوماً فقط لنحو 500 ألف سطر، بينما استثمر فريق Roc 487 يوماً لأنهم لم يكتفوا بالنقل، بل أعادوا تصميم أجزاء جوهرية من المترجم.

ما النتائج الملموسة لهذا التحول؟

أول اختبار عملي للمترجم الجديد كان تحديث لعبة Rocci Bird المبنية على منصة WASM-4. النتائج تتحدث عن نفسها:

  • ملف WebAssembly الناتج: 31 كيلوبايت فقط، مقارنة بأكثر من 62 كيلوبايت من المترجم القديم
  • الكود المصدري للعبة أصبح أكثر إيجازاً
  • اللعبة بأكملها لا تتجاوز ألف سطر من كود Roc
أقل من النصف
حجم ملف WebAssembly الناتج من المترجم الجديد مقارنة بالأصلي

تحميل الكود الساخن: ميزة المترجمات المفسَّرة في لغة مُترجَمة

الميزة الأبرز التي أتاحتها إعادة الكتابة هي Hot Code Loading، أو تحميل الكود الساخن. تخيّل أنك تُشغّل خادم ويب بأمر roc server.roc، ثم تُعدّل الكود أثناء تشغيله. الطلب التالي الذي يستقبله الخادم سيُعالَج بالكود الجديد تلقائياً، دون إعادة تشغيل.

هذا السلوك معتاد في لغات مفسَّرة مثل Python، لكنه نادر في لغات مُترجَمة عالية الأداء. فريق Roc أثبت أن الأداء العالي لا يستوجب التضحية بتجربة المطور.

Advertisements

من يقف خلف هذا الإنجاز؟

الإنجاز ثمرة جهد جماعي ضخم. من أبرز المساهمين:

  • أنتوني بولارد وسام موهر: المحلل النحوي الجديد (Parser)
  • جاريد راميريز: مدقق الأنواع الجديد (Type-checker)
  • أياز حافظ: نظام حل مجموعات لامدا
  • ستيفان: تشغيل المترجم في المتصفح عبر WebAssembly بحجم 2.5 ميغابايت فقط
  • أنتون-4 ولوك بوسويل: مساهمات لا تُحصى في المترجم والمكتبات والأمثلة

المشروع مدعوم من رعاة تجاريين تشمل rwx وLambda Class وNoRedInk وtweedeGolf وVendr، إضافة إلى عشرات الرعاة الأفراد.

ماذا ينتظر Roc بعد هذه المحطة؟

التكافؤ الوظيفي محطة مهمة لكنها ليست إصداراً رسمياً. الفريق يستهدف إطلاق الإصدار 0.1.0 قبل نهاية العام. حالياً، يمكن لأي شخص تجربة Roc مباشرة من الصفحة الرئيسية لموقع roc-lang.org عبر محرر يعمل بـ WebAssembly في المتصفح.

ℹ️

رأي Logicity

قرار Roc بالانتقال من Rust إلى Zig يُعيد فتح النقاش حول أي لغة تصلح فعلاً لبناء المترجمات. Rust تُهيمن على الخطاب، لكن Zig تكسب أرضاً بين من يُفضّلون البساطة والتحكم الصريح. إذا كنت تبني أدوات تطوير، فالمقارنة المباشرة بين Rust وZig وC++ وGo تستحق وقتك: Rust تتفوق في الأمان الذاكري مع منحنى تعلم حاد، Zig تُقدّم تحكماً أدنى مستوى بصيغة أبسط، بينما Go تبقى الخيار الأسرع للإنتاجية على حساب الأداء الأقصى.

الأسئلة الشائعة

ما هي لغة Roc ومن أنشأها؟

Roc لغة برمجة وظيفية أنشأها ريتشارد فيلدمان، مصممة لبناء تطبيقات سريعة وموثوقة. فيلدمان كان عضواً في فريق Elm الأساسي قبل تأسيس Roc.

لماذا انتقل فريق Roc من Rust إلى Zig بينما Bun يفعل العكس؟

الفرق في الهدف: Bun أجرى نقلاً مباشراً سريعاً، بينما Roc أعاد تصميم أجزاء جوهرية من المترجم. فريق Roc يرى أن تحكم Zig الصريح في الذاكرة وغياب تدفق التحكم الخفي أنسب لتطوير المترجمات.

ما فائدة Hot Code Loading للمطورين؟

تتيح تعديل الكود أثناء تشغيل التطبيق دون إعادة تشغيله، مما يُسرّع دورة التطوير بشكل كبير خصوصاً في تطوير الخوادم والألعاب.

هل يمكنني تجربة Roc الآن؟

نعم، يمكنك كتابة وتشغيل كود Roc مباشرة من الصفحة الرئيسية لموقع roc-lang.org عبر محرر يعمل بـ WebAssembly في المتصفح.

ℹ️

هل تحتاج مساعدة في التطبيق؟

إذا كنت تدرس الانتقال بين لغات الأنظمة في مشروعك أو تبني أدوات تطوير، تواصل مع فريق Logicity للحصول على استشارة تقنية متخصصة.

ع

عمر حسن

كاتب تقني وابتكار

أُنتِج هذا المقال بمساعدة الذكاء الاصطناعي وراجعه فريق التحرير في لوجيسيتي. اعرف المزيد في سياسة التحرير.

اقرأ أيضاً