تجربة مُترجم TypeScript إلى native

TS-Native

TS-Native هو تجربة لتجميع (compiler) بهدف ترجمة لغة بنَفَس TypeScript إلى ثنائيات أصلية (native binaries). الجزء المثير للاهتمام ليس فقط توليد الكود، بل ضغط التصميم الذي ينشأ عندما يجب أن تعيش صيغة مألوفة عبر التحليل (parsing) وتحليل الأنواع وتصميم تمثيل وسيط (IR design) وإخراج على مستوى الآلة.

مخطط معماري لمترجم TS-Native

المشكلة التي يعالجها

من السهل الحديث عن المجمّعات بمصطلحات مجردة، والأصعب هو تعريف لغة بدقة تكفي لتمنح كل مرحلة من مراحل خط الأنابيب سببًا واضحًا لوجودها. تُعد TS-Native قيمة لأنها تُجبر الأسئلة حول البنية (syntax) والدلالة (semantics) وأنظمة الأنواع (type systems) والإخراج الأصلي (native output) على العيش ضمن نظام واحد متماسك.

البنية المعمارية

القرارات الأساسية للنظام

01

حزمة المُحلِّل (Parser crate)

تحوّل صيغة تشبه TS إلى تمثيل داخلي يكون صارمًا بما يكفي لدعم مراحل المجمّع اللاحقة.

02

الطبقة التحليلية للغة

تفكّر في دلالات اللغة بما يتجاوز البنية السطحية، بحيث يمكن للمترجم أن يفرض المعنى بدلًا من مجرد الشكل.

03

TS-Native IR

تعمل كحلقة وصل بين النية على مستوى المصدر وقرارات توليد كود النظام الخلفي.

04

مخرجات مدعومة بـ LLVM

تُخفض الـ IR إلى ثنائيات أصلية عبر نظام خلفي يعرض قيودًا واقعية على مستوى الأنظمة.

ما الذي يهم

  • استخدمت المشروع كعامل دفع لإتقان بناء المترجم بما يتجاوز عمق الدروس.
  • قسّمت مساحة العمل إلى محلّل (Parser) ونظام أنواع (Type System) وIR وتوليد كود (Codegen) واعتبارات سطر الأوامر (CLI)؛ للحفاظ على قابلية التعليم المعماري.
  • تشديد مواصفة اللغة الرسمية بحيث يُعرَّف المترجم بالقواعد بدلًا من أخطاء التنفيذ.
RustLLVMParser designType systemsCLI

الوسائط

لقطات شاشة وعروض

مخطط خط سير TS-Native

مخطط خط سير TS-Native

معاينة CLI لـ TS-Native

معاينة CLI لـ TS-Native