Luau ، وهو نوع تم التحقق منه من نوع لغة Lua ، وهو مفتوح المصدر

الإعلان عن المصدر المفتوح ونشر أول إصدار مستقل للغة البرمجة Luau، مواصلة تطوير لغة Lua والتوافق مع الإصدارات السابقة مع Lua 5.1. تم تصميم Luau بشكل أساسي لدمج محركات البرمجة النصية في التطبيقات ويهدف إلى تحقيق أداء عالٍ واستهلاك منخفض للموارد. رمز المشروع مكتوب بلغة C++ وهو مفتوح بموجب ترخيص MIT.

يقوم Luau بتوسيع Lua مع إمكانيات التحقق من النوع وبعض التركيبات النحوية الجديدة مثل السلسلة الحرفية. اللغة متوافقة مع الإصدارات السابقة مع Lua 5.1 وجزئيًا مع الإصدارات الأحدث. يتم دعم Lua Runtime API، مما يسمح لك باستخدام Luau مع التعليمات البرمجية والارتباطات الموجودة. يعتمد وقت تشغيل اللغة على كود Lua runtime 5.1 الذي تمت إعادة صياغته بشكل كبير، ولكن تمت إعادة كتابة المترجم بالكامل. أثناء التطوير، تم استخدام بعض تقنيات التحسين الجديدة لتحقيق أداء أعلى مقارنةً بـ Lua.

تم تطوير المشروع بواسطة Roblox ويتم استخدامه في كود منصة الألعاب والألعاب وتطبيقات المستخدم الخاصة بهذه الشركة، بما في ذلك محرر Roblox Studio. في البداية، تم تطوير Luau خلف أبواب مغلقة، ولكن في النهاية تقرر نقله إلى فئة المشاريع المفتوحة لمزيد من التطوير المشترك بمشاركة المجتمع.

السمات الرئيسية:

  • الكتابة التدريجية، تحتل موقعًا متوسطًا بين الكتابة الديناميكية والثابتة. يتيح لك Luau استخدام الكتابة الثابتة حسب الحاجة عن طريق تحديد معلومات النوع من خلال التعليقات التوضيحية الخاصة. يتم توفير الأنواع المضمنة "any" و"nil" و"boolean" و"number" و"string" و"thread". وفي الوقت نفسه، يتم الحفاظ على إمكانية استخدام الكتابة الديناميكية دون تحديد نوع المتغيرات والوظائف بشكل صريح. الدالة foo(x: number, y: string): منطقية محلية k: string = y:rep(x) return k == "a" end
  • دعم القيم الحرفية للسلسلة (كما في Lua 5.3) مثل "\0x**" (رقم سداسي عشري)، و"\u{**}" (حرف Unicode) و"\z" (نهاية السطر)، بالإضافة إلى القدرة على تصور تنسيق الأرقام (يمكنك كتابة 1_000_000 بدلاً من 1000000)، والأحرف الحرفية للأرقام السداسية العشرية (0x...) والأرقام الثنائية (0b......).
  • دعم تعبير "متابعة"، المكمل للكلمة الأساسية "فاصل" الموجودة، للانتقال إلى تكرار حلقة جديدة.
  • دعم عوامل التعيين المركبة (+=، -=، *=، /=، %=، ^=، ..=).
  • دعم استخدام الكتل الشرطية "if-then-else" في شكل تعبيرات تُرجع القيمة المحسوبة أثناء تنفيذ الكتلة. يمكنك تحديد عدد عشوائي من تعبيرات elseif في الكتلة. القيمة القصوى المحلية = إذا كانت a > b ثم علامة محلية else b = إذا x < 0 ثم -1 elseif x > 0 ثم 1 else 0
  • وجود وضع العزل (sandbox) الذي يسمح لك بتشغيل تعليمات برمجية غير جديرة بالثقة. يمكن استخدام هذه الميزة لتنظيم الإطلاق جنبًا إلى جنب مع التعليمات البرمجية الخاصة بك والتعليمات البرمجية المكتوبة بواسطة مطور آخر، على سبيل المثال، مكتبات الجهات الخارجية التي لا يمكن ضمان سلامتها.
  • تمت إزالة القيود المفروضة على المكتبة القياسية التي يمكن أن تؤدي إلى حدوث مشكلات أمنية. على سبيل المثال، المكتبات "io" (الوصول إلى الملفات وبدء العمليات)، "الحزمة" (الوصول إلى الملفات وتحميل الوحدات)، "os" (وظائف الوصول إلى الملفات وتغيير متغيرات البيئة)، "debug" (العملية غير الآمنة مع الذاكرة) و"dofile" و"loadfile" (الوصول إلى FS).
  • توفير أدوات تحليل الكود الثابت وتحديد الأخطاء (اللتر) والتحقق من الاستخدام الصحيح للأنواع.
  • امتلك محللًا عالي الأداء ومترجمًا ومترجمًا للرمز الثانوي. لا يدعم Luau تجميع JIT حتى الآن، ولكن يُزعم أن مترجم Luau يمكن مقارنته تمامًا في الأداء مع LuaJIT في بعض المواقف.

المصدر: opennet.ru

إضافة تعليق