عن المشروع
Daslang (المعروفة سابقًا باسم daScript) هي لغة برمجة عالية الأداء ومكتوبة بشكل ثابت، صُممت للألعاب والتطبيقات فورية الاستجابة. أُنشئت في Gaijin Entertainment لمعالجة تكلفة التواصل بين لغات البرمجة النصية وC++ في محرك الألعاب القائم على ECS، حيث كان marshaling البيانات يستهلك ميزانية الإطار. تتطابق بنية بيانات Daslang مع C++، لذا تُوصف استدعاءات البرمجة النصية إلى C++ بأنها شبه معدومة التكلفة، دون marshaling أو تغليف (boxing) أو تحويل للأنواع.
تشمل المبادئ الأساسية المذكورة في README: التكرار السريع (إعادة ترجمة لعبة إنتاج كاملة في حوالي خمس ثوانٍ، مع إعادة تحميل ساخنة مدمجة)، والصراحة (لا تحويلات أنواع خفية أو تخصيصات صامتة؛ علم `options log` يعرض مخرجات المترجم)، وموقف براغماتي تجاه السلامة، و`delete` اليدوي لتقليل ضغط GC، وAOT إلى C++ لسرعة أصلية، ونظام ماكرو في زمن الترجمة يمكّن المكتبات من إعادة تشكيل الصياغة لمجال معين.
هناك ثلاث طبقات تنفيذ مُخطط لها: مفسّر سريع قائم على الشجرة، وترجمة AOT إلى C++ (مطلوبة لوحدات التحكم)، وتنفيذ JIT عبر LLVM. يوجد وضع هجين يستخدم التجزئة الدلالية بحيث تبقى الدوال غير المتغيرة AOT بينما تعود الدوال المتغيرة إلى المفسّر، مما يسمح بالتحديثات السريعة دون إعادة بناء كاملة.
التثبيت عبر git clone مع تحديث الوحدات الفرعية (submodules) بشكل متكرر. البناء يستخدم CMake مع إعداد Release والهدف `daslang`. استخدام AOT يولّد كعب C++ من ملف `.das`، ثم يُجمَّع ويُرتبط مع التطبيق المضيف. استخدام JIT يتطلب مكتبة LLVM 16.0.6 المشتركة في مسار ثابت (`lib/LLVM.dll`) بسبب الارتباطات الديناميكية، وبعدها تُشغَّل البرامج النصية باستخدام `-jit`. التضمين في تطبيقات CMake يتم عبر `find_package(DAS)`، الذي يوفر الهدفين `libDaScript` و`libDaScriptDyn`.
مدير الحزم المدمج، daspkg، يتولى تثبيت وتحديث وبناء حزم daslang، بما في ذلك وحدات daslang النقية ووحدات C++ الأصلية، من فهرس أو عنوان git URL، مع دعم البحث. إضافات VS Code توفر تلوينًا للصياغة وميزات خادم اللغة مثل الفحص اللغوي (linting)، والتنقيح، والمقاطع البرمجية. خادم MCP يعرض 29 أداة مدعومة من المترجم لمساعدي البرمجة بالذكاء الاصطناعي، تغطي تشخيصات الترجمة، وفحص الأنواع، والانتقال إلى التعريف، وإيجاد المراجع، وتفريغ AST، وتوليد AOT، وتقييم التعبيرات، وgrep مدركًا للصياغة، وإدارة الحزم، باستخدام نقل stdio دون تبعيات بناء إضافية. قواعد نحوية tree-sitter تحلل قاعدة الشيفرة وتدعم تلوين الصياغة، والبحث المدرك للصياغة عبر ast-grep، وإضافات المحرر بما فيها إضافة Zed.
المشروع مرخص بموجب BSD 3-Clause، مع احتفاظ المكونات الثالثة المضمنة بتراخيصها الخاصة.
Comments
0 people shared their preference · Deer Point appears after 10 participants
Sign in to join the discussion.