Luau کے لیے اوپن سورس، Lua زبان کی ایک قسم کی جانچ پڑتال کی قسم

Lua پروگرامنگ زبان کی پہلی اسٹینڈ ریلیز کے اوپن سورس اور اشاعت کا اعلان کیا، Lua زبان کی ترقی کو جاری رکھتے ہوئے اور Lua 5.1 کے ساتھ پسماندہ مطابقت رکھتا ہے۔ Luau بنیادی طور پر اسکرپٹنگ انجنوں کو ایپلی کیشنز میں سرایت کرنے کے لیے ڈیزائن کیا گیا ہے اور اس کا مقصد اعلی کارکردگی اور کم وسائل کی کھپت کو حاصل کرنا ہے۔ پروجیکٹ کوڈ C++ میں لکھا گیا ہے اور MIT لائسنس کے تحت کھلا ہے۔

Luau قسم کی جانچ کی صلاحیتوں اور کچھ نئی نحوی تعمیرات جیسے سٹرنگ لٹریلز کے ساتھ Lua کو بڑھاتا ہے۔ زبان Lua 5.1 کے ساتھ پسماندہ مطابقت رکھتی ہے اور جزوی طور پر نئے ورژن کے ساتھ۔ Lua Runtime API تعاون یافتہ ہے، جو آپ کو موجودہ کوڈ اور بائنڈنگز کے ساتھ Luau استعمال کرنے کی اجازت دیتا ہے۔ زبان کا رن ٹائم بہت زیادہ دوبارہ کام کیے گئے Lua رن ٹائم 5.1 کوڈ پر مبنی ہے، لیکن مترجم کو مکمل طور پر دوبارہ لکھا گیا ہے۔ ترقی کے دوران، Lua کے مقابلے میں اعلیٰ کارکردگی حاصل کرنے کے لیے کچھ نئی اصلاحی تکنیکیں استعمال کی گئیں۔

اس پروجیکٹ کو روبلوکس نے تیار کیا تھا اور اس کمپنی کے گیمنگ پلیٹ فارم، گیمز اور صارف ایپلی کیشنز کے کوڈ میں استعمال ہوتا ہے، بشمول روبلوکس اسٹوڈیو ایڈیٹر۔ ابتدائی طور پر، Luau کو بند دروازوں کے پیچھے تیار کیا گیا تھا، لیکن آخر میں اسے کمیونٹی کی شراکت سے مزید مشترکہ ترقی کے لیے کھلے منصوبوں کے زمرے میں منتقل کرنے کا فیصلہ کیا گیا۔

اہم خصوصیات:

  • بتدریج ٹائپنگ، متحرک اور جامد ٹائپنگ کے درمیان درمیانی پوزیشن پر قبضہ۔ Luau آپ کو خصوصی تشریحات کے ذریعے قسم کی معلومات بتا کر ضرورت کے مطابق جامد ٹائپنگ استعمال کرنے کی اجازت دیتا ہے۔ بلٹ ان اقسام "کوئی"، "nil"، "بولین"، "نمبر"، "سٹرنگ" اور "تھریڈ" فراہم کی گئی ہیں۔ ایک ہی وقت میں، متغیرات اور افعال کی قسم کو واضح طور پر بیان کیے بغیر متحرک ٹائپنگ کے استعمال کا امکان محفوظ ہے۔ فنکشن foo(x: نمبر، y: string): boolean local k: string = y:rep(x) ریٹرن k == "a" end
  • سٹرنگ لٹریلز کے لیے سپورٹ (جیسا کہ Lua 5.3 میں) جیسے "\0x**" (ہیکساڈیسیمل نمبر)، "\u{**}" (یونیکوڈ کریکٹر) اور "\z" (لائن کا اختتام)، نیز نمبر فارمیٹنگ کو تصور کرنے کی صلاحیت (آپ 1 کی بجائے 000_000_1000000 لکھ سکتے ہیں)، ہیکساڈیسیمل (0x...) اور بائنری نمبرز (0b......) کے لٹریلز۔
  • "جاری رکھیں" کے اظہار کے لیے سپورٹ، موجودہ "بریک" کلیدی لفظ کی تکمیل کرتے ہوئے، نئے لوپ کے تکرار پر جانے کے لیے۔
  • کمپاؤنڈ اسائنمنٹ آپریٹرز کے لیے سپورٹ (+=، -=، *=، /=، %=، ^=، ..=)۔
  • ایسے تاثرات کی شکل میں مشروط "اگر-تو-اور" بلاکس کے استعمال کے لیے سپورٹ جو بلاک کے عمل کے دوران شمار کی گئی قدر واپس کرتے ہیں۔ آپ کسی بلاک میں elseif اظہارات کی صوابدیدی تعداد کی وضاحت کر سکتے ہیں۔ مقامی maxValue = if a > b پھر a else b لوکل سائن = اگر x < 0 پھر -1 elseif x > 0 پھر 1 else 0
  • تنہائی کے موڈ (سینڈ باکس) کی موجودگی، جو آپ کو ناقابل اعتماد کوڈ چلانے کی اجازت دیتا ہے۔ یہ خصوصیت آپ کے اپنے کوڈ اور دوسرے ڈویلپر کے لکھے ہوئے کوڈ کے ساتھ ساتھ لانچ کو ترتیب دینے کے لیے استعمال کی جا سکتی ہے، مثال کے طور پر، تیسری پارٹی کی لائبریریاں جن کی حفاظت کی ضمانت نہیں دی جا سکتی۔
  • معیاری لائبریری کی ایک حد جس سے ایسے فنکشنز کو ہٹا دیا گیا ہے جو ممکنہ طور پر سیکورٹی کے مسائل پیدا کر سکتے ہیں۔ مثال کے طور پر، لائبریریاں "io" (فائلوں تک رسائی اور لانچنگ کے عمل)، "پیکیج" (فائلوں تک رسائی اور لوڈنگ ماڈیولز)، "os" (فائلوں تک رسائی اور ماحولیاتی متغیرات کو تبدیل کرنے کے کام)، "ڈیبگ" (میموری کے ساتھ غیر محفوظ آپریشن) ، "ڈوفائل" اور "لوڈ فائل" (FS رسائی)۔
  • جامد کوڈ کے تجزیے کے لیے آلات فراہم کرنا، غلطیوں کی نشاندہی کرنا (لنٹر) اور اقسام کے درست استعمال کی جانچ کرنا۔
  • خود اعلی کارکردگی کا تجزیہ کار، بائیک کوڈ مترجم اور مرتب کرنے والا۔ Luau ابھی تک JIT کی تالیف کی حمایت نہیں کرتا ہے، لیکن یہ دعویٰ کیا جاتا ہے کہ Luau ترجمان کا کارکردگی میں کچھ حالات میں LuaJIT سے کافی موازنہ ہے۔

ماخذ: opennet.ru

نیا تبصرہ شامل کریں