
مبتكر Valen يربط اللغات الجديدة بـ Rust من دون C ABI
نشر Evan Ovadia، مبتكر لغة البرمجة Valen والمهندس السابق في Google، طريقة تجريبية تربط لغة جديدة مباشرة بـ Rust وتتيح استدعاء الشيفرة العامة، عبر تشغيل مترجم Rust كمكتبة بدل المرور بواجهة C ABI.
نشر Evan Ovadia، مطوّر لغة البرمجة Valen، طريقة تجريبية تربط لغة جديدة مباشرة بـ Rust من دون تمرير الاستدعاءات عبر واجهة التطبيقات الثنائية C ABI. وتناول موقع The Register العمل في 25 سبتمبر 2026.
وشرح Ovadia، وهو مهندس سابق في Google وأحد المساهمين الأساسيين في Mojo، المشروع في تدوينة نُشرت في 17 سبتمبر 2026. وقد استعار اسم "Golden Spike" من احتفال عام 1869 في ولاية يوتا، حين أكمل مسمار ذهبي بوزن 17.6 قيراط أول سكة حديد عابرة للقارة في الولايات المتحدة.

لماذا تتوقف واجهة C عند الأنواع العامة
تعبر المكتبات عادة بين اللغات بصيغة C: يعرض crate في Rust دواله بصيغة extern "C" وأنواعه بصيغة repr(C)، وتصل إليها اللغات الأخرى عبر واجهة الدوال الخارجية. لكن C لا يملك الأنواع العامة (generics)، لذا لا يمكن استدعاء دالة عامة في Rust من الخارج، كما لا يملك Rust واجهة ABI مستقرة خاصة به.
أراد Ovadia بديلًا أسرع وأسهل من Rust مع الاستمرار في استخدام مكتبات Rust، ومنها مكتبته الرسومية المبنية على wgpu. وكتب: "السؤال المركزي، واللغز المركزي الذي يجب حله، هو كيف ننفذ الأنواع العامة بين اللغات؟"
مترجمان، رقصة واحدة
بدل توليد ارتباطات C، يدير مترجم Valen الآن مترجم rustc مباشرة. فهو يقرأ عبارات import في Valen، ويولّد ملف lib.rs صغيرًا في Rust يحوي عبارات use المقابلة، ويمرره إلى rustc_driver::run_compiler الذي يتيح تشغيل مترجم Rust كمكتبة؛ ثم يخبر callback بأن الاعتماديات المطلوبة قد حُمّلت.
الجزء الأصعب هو التنميط الفوري (instantiation): بما أن الطرفين عامّان، فعلى المترجمين أن يكتشفا معًا أي نسخ محددة من الدالة تُستدعى فعليًا. يسمي Ovadia ذلك "الرقصة": فعندما يحتاج rustc إلى دالة مكتوبة بـ Valen، ينتجها منظّم الأنواع في Valen. ولتحقيق ذلك أضاف نحو 100 سطر من callback إلى rustc؛ وهي تعتمد على واجهات API خاصة وغير مستقرة ولا يمكن ضمّها إلى upstream، كما يحذّر.
أول عرض وما ينقص بعد
جاء الدليل عندما فتح برنامج بـ Valen نافذة من Rust، ومرّر closure في Valen ينفّذ trait في Rust إلى حلقة عامة في Rust، فرسم إطارًا من مكتبته الرسومية. وكتب: "دُقّ المسمار الذهبي في مكانه، ووُلد المترجم العابر للقارة".
الهدف التالي هو أمان الذاكرة عند الحدود. يستخدم Valen أسلوب group borrowing الذي يعمل وقت الترجمة ويسمح بمراجع مشتركة قابلة للتغيير؛ ويقول Ovadia إن النموذج الأولي يقوم ببعض فحص الاستعارات عبر الحدود مع Rust. وتبقى حواف حادة: البنى (structs) بلا حجم عند الحدود، والمراجع الجيلية معطّلة، ولا يمكن بعد إعلان نوع Rust قائم كنوع خطي. ونُشر المستودع تحت رخصة Apache 2.0 ولا يزال نموذجًا أوليًا.
SiTech — تطوير ويب مدعوم بالذكاء الاصطناعي
نبني مواقع سريعة وعصرية وندمج الذكاء الاصطناعي في سير عمل الشركات. لديك مشروع أو سؤال؟ يسعدنا مساعدتك.