عن المشروع
Xag هي لغة برمجة مترجمة تُبنى حول الأداء العالي، ورسائل الأخطاء المفيدة، وإدارة الذاكرة بأسلوب مشابه لـ Rust. يجب إعلان كل حجم بشكل صريح — لا يوجد نوع `int` خالٍ. يتم تجميع البرامج مسبقًا إلى كود أصلي عبر LLVM أو تنفيذها باستخدام أحد مُفسّري AOT اثنين.
يتم كتابة المُحَدِّث باللغة C++20 باستخدام واجهة برمجة تطبيقات C++ الأصلية لـ LLVM، مما يتطلب LLVM الإصدار 23 أو الأحدث، وـ CMake وNinja. تستخدم ملفات المصدر امتداد .xag. تتضمن أدوات المشروع أوامر للتحليل اللفظي، والتحليل النحوي، والتحقق من الأنواع، ومراجعة IR.
توجد ثلاثة محركات تنفيذ: مُفسّر اختبار (صحيح بالطبع، ولكن بطيء)، ومُفسّر سريع (مُحسّن للتعليمات المسطحة)، وواجهة AOT أصلية. تُشير جميع الثلاثة إلى نفس وقت التشغيل المشترك، وبالتالي فإنها توافق على سلوك وقت التشغيل. عند اختلاف المحركات، يحدد المشروع أي منها خارج الخطة.
يتم التحقق الصارم من الحسابات العشرية: يتم مقارنة التنفيذ البرمجي مع Python `decimal` (libmpdec) عبر 400,000 حالة، ومع وحدات الأعداد العشرية الخاصة بأجهزة POWER عبر محاكاة QEMU لـ 20,000 حالة إضافية.
دعم Unicode يتبع UAX #29 بالكامل، بما في ذلك عد مجموعات الرسومات، مقابل جداول Unicode 17.0.0. يتم تشغيل جميع 766 حالة توافق Unicode في مجموعة الاختبار.
يكتب مولد oracle (`generator/`) برامج Xag عشوائية ويراقبها عبر جميع المحركات للعثور على اختلافات. ويتم كتابة المولد بلغة Rust بدون اعتماد على أي مكتبات خارجية.
الترخيص: Apache-2.0 WITH LLVM-exception. الاستخدام مجاني؛ لكن تعديل المُحَدِّث أو وقت التشغيل يتطلب الإسناد بموجب شروط Apache.
ملاحظة: هذا مشروع قيد التطوير المبكر — لا شيء مستقر بعد. معظم الكود في المستودع تم إنشاؤه بواسطة الذكاء الاصطناعي تحت إشراف مصمم اللغة.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.