Luau uchun ochiq manba, Lua tilining turini tekshirish varianti

Lua tilining rivojlanishini davom ettiruvchi va Lua 5.1 bilan orqaga qarab mos keladigan Luau dasturlash tilining birinchi mustaqil nashri ochiq manba va nashr etilishini e'lon qildi. Luau asosan skript dvigatellarini ilovalarga joylashtirish uchun moʻljallangan va yuqori unumdorlikka va kam resurs sarfiga erishishga qaratilgan. Loyiha kodi C++ tilida yozilgan va MIT litsenziyasi ostida ochiq.

Luau Lua-ni tipni tekshirish imkoniyatlari va qator harflari kabi ba'zi yangi sintaktik konstruktsiyalar bilan kengaytiradi. Til Lua 5.1 va qisman yangi versiyalari bilan orqaga qarab mos keladi. Lua Runtime API qo'llab-quvvatlanadi, bu sizga Luau-dan mavjud kod va ulanishlar bilan foydalanish imkonini beradi. Tilning ishlash vaqti jiddiy qayta ishlangan Lua ish vaqti 5.1 kodiga asoslangan, ammo tarjimon butunlay qayta yozilgan. Rivojlanish jarayonida Lua bilan solishtirganda yuqori samaradorlikka erishish uchun ba'zi yangi optimallashtirish usullari qo'llanildi.

Loyiha Roblox tomonidan ishlab chiqilgan va ushbu kompaniyaning o'yin platformasi, o'yinlari va foydalanuvchi ilovalari kodida, shu jumladan Roblox Studio muharririda qo'llaniladi. Dastlab, Luau yopiq eshiklar ortida ishlab chiqilgan, ammo oxir-oqibat uni jamiyat ishtirokida yanada hamkorlikda rivojlantirish uchun ochiq loyihalar toifasiga o'tkazishga qaror qilindi.

Asosiy xususiyatlari:

  • Dinamik va statik yozish o'rtasida oraliq pozitsiyani egallagan bosqichma-bosqich yozish. Luau maxsus izohlar orqali tur ma'lumotlarini ko'rsatish orqali kerak bo'lganda statik yozishdan foydalanish imkonini beradi. O'rnatilgan "har qanday", "nil", "boolean", "raqam", "string" va "thread" turlari taqdim etilgan. Shu bilan birga, o'zgaruvchilar va funktsiyalar turini aniq belgilamasdan dinamik terishdan foydalanish imkoniyati saqlanib qoladi. funktsiya foo(x: raqam, y: string): mantiqiy mahalliy k: string = y:rep(x) qaytish k == “a” oxiri
  • "\5.3x**" (o'n oltilik raqam), "\u{**}" (Unicode belgisi) va "\z" (satr oxiri) kabi satr harflarini qo'llab-quvvatlash (Lua 0 da bo'lgani kabi), shuningdek raqamlar formatini tasavvur qilish qobiliyati (siz 1 o'rniga 000_000_1000000 yozishingiz mumkin), o'n oltilik (0x...) va ikkilik raqamlar (0b......) uchun harflar.
  • Yangi sikl iteratsiyasiga o'tish uchun mavjud "break" kalit so'zini to'ldiruvchi "davom etish" iborasini qo'llab-quvvatlash.
  • Murakkab belgilash operatorlarini qo'llab-quvvatlash (+=, -=, *=, /=, %=, ^=, ..=).
  • Blokni bajarish jarayonida hisoblangan qiymatni qaytaruvchi iboralar ko'rinishidagi shartli "if-then-alse" bloklaridan foydalanishni qo'llab-quvvatlash. Blokdagi elseif ifodalarining ixtiyoriy sonini belgilashingiz mumkin. mahalliy maxValue = agar a > b keyin a else b mahalliy belgi = agar x < 0 bo'lsa -1 elseif x > 0 keyin 1 boshqa 0
  • Ishonchsiz kodni ishga tushirish imkonini beruvchi izolyatsiyalash rejimi (qum qutisi) mavjudligi. Bu xususiyat boshqa ishlab chiquvchi tomonidan yozilgan o'z kodingiz va kodingizni yonma-yon ishga tushirishni tashkil qilish uchun ishlatilishi mumkin, masalan, xavfsizligi kafolatlanmaydigan uchinchi tomon kutubxonalari.
  • Xavfsizlik muammolarini keltirib chiqarishi mumkin bo'lgan funksiyalar olib tashlangan standart kutubxonaning cheklovi. Masalan, "io" kutubxonalari (fayllarga kirish va ishga tushirish jarayonlari), "paket" (fayllarga kirish va modullarni yuklash), "os" (fayllarga kirish va atrof-muhit o'zgaruvchilarini o'zgartirish funktsiyalari), "debug" (xotira bilan xavfsiz ishlash) , "dofile" va "loadfile" (FS kirish).
  • Statik kodlarni tahlil qilish, xatolarni aniqlash (linter) va turlardan to'g'ri foydalanishni tekshirish uchun vositalarni taqdim etish.
  • O'zining yuqori samarali tahlilchisi, bayt-kod tarjimoni va kompilyatori. Luau hali JIT kompilyatsiyasini qo'llab-quvvatlamaydi, ammo Luau tarjimoni ba'zi holatlarda LuaJIT bilan ishlash jihatidan ancha taqqoslanganligi da'vo qilinadi.

Manba: opennet.ru

a Izoh qo'shish