Luau үчүн ачык булак, Луа тилинин түрүн текшерүү варианты

Луа тилин өнүктүрүүнү улантуу жана Lua 5.1 менен артка шайкеш келген Luau программалоо тилинин биринчи өз алдынча релизинин ачык булагы жана жарыяланышы жарыяланды. Луау тили, биринчи кезекте, скрипт кыймылдаткычтарын тиркемелерге киргизүү үчүн арналган жана жогорку өндүрүмдүүлүккө жана аз ресурс керектөөгө жетишүүгө багытталган. Долбоордун коду C++ тилинде жазылган жана MIT лицензиясы боюнча ачык.

Луау Луаны типти текшерүү мүмкүнчүлүктөрү жана сап литералдары сыяктуу жаңы синтаксистик конструкциялар менен кеңейтет. Бул тил Lua 5.1 жана жарым-жартылай жаңы версиялары менен артка шайкеш келет. Lua Runtime API колдоого алынып, Луауду учурдагы код жана байланыштар менен колдонууга мүмкүндүк берет. Тилдин иштөө убактысы катуу кайра иштетилген Lua иштөө убактысы 5.1 кодуна негизделген, бирок котормочу толугу менен кайра жазылган. иштеп чыгуу учурунда, кээ бир жаңы оптималдаштыруу ыкмалары Lua салыштырмалуу жогорку натыйжалуулугун жетүү үчүн колдонулган.

Долбоор Roblox тарабынан иштелип чыккан жана бул компаниянын оюн платформасынын кодунда, оюндарында жана колдонуучу тиркемелеринде, анын ичинде Roblox Studio редакторунда колдонулат. Башында Луау жабык эшик артында иштелип чыккан, бирок акырында коомчулуктун катышуусу менен мындан ары биргелешип иштеп чыгуу үчүн аны ачык долбоорлордун категориясына которуу чечими кабыл алынган.

Негизги өзгөчөлүктөр:

  • Акырындык менен терүү, динамикалык жана статикалык терүүнүн ортосундагы аралык позицияны ээлейт. Luau атайын аннотациялар аркылуу тип маалыматын көрсөтүү менен статикалык терүүнү колдонууга мүмкүндүк берет. Камтылган "ар кандай", "нөл", "логикалык", "сан", "сап" жана "жип" түрлөрү каралган. Ошол эле учурда өзгөрмөлөрдүн жана функциялардын түрүн так аныктабастан динамикалык терүүнү колдонуу мүмкүнчүлүгү сакталат. функция foo(x: сан, у: сап): логикалык жергиликтүү k: сап = y:rep(x) кайтаруу k == “a” аягы
  • "\5.3x**" (он алтылык сан), "\u{**}" (Юникод белгиси) жана "\z" (саптын аягы) сыяктуу сап литералдарын колдоо (Lua 0 сыяктуу), ошондой эле сандарды форматтоо (1 ордуна 000_000_1000000 жаза аласыз), он алтылык (0x...) жана экилик сандар үчүн литералдар (0b......) визуализациялоо мүмкүнчүлүгү.
  • Жаңы цикл итерациясына өтүү үчүн учурдагы "тыныгуу" ачкыч сөзүн толуктаган "улантуу" туюнтмасын колдоо.
  • Комплекстүү дайындоо операторлорун колдоо (+=, -=, *=, /=, %=, ^=, ..=).
  • Блоктун аткарылышы учурунда эсептелген маанини кайтаруучу туюнтмалар түрүндөгү шарттуу "эгер-анда-башка" блокторду колдонууну колдоо. Блоктогу elseif туюнтмаларынын ыктыярдуу санын көрсөтө аласыз. жергиликтүү maxValue = эгерде a > b анда a else b жергиликтүү белги = if x < 0 анда -1 elseif x > 0 анда 1 башка 0
  • Ишенимсиз кодду иштетүүгө мүмкүндүк берүүчү изоляция режиминин (кумдук) болушу. Бул өзгөчөлүк башка иштеп чыгуучу тарабынан жазылган өз кодуңузду жана кодуңузду катарлаш ишке киргизүүнү уюштуруу үчүн колдонулушу мүмкүн, мисалы, үчүнчү тараптын китепканалары, алардын коопсуздугу кепилдикке алынбайт.
  • Коопсуздук көйгөйлөрүн жаратышы мүмкүн болгон функциялар алынып салынган стандарттык китепкананын чектөөсү. Мисалы, китепканалар “io” (файлдарга кирүү жана процесстерди ишке киргизүү), “пакет” (файлдарга жетүү жана модулдарды жүктөө), “os” (файлдарга жетүү жана чөйрө өзгөрмөлөрүн өзгөртүү функциялары), “дебаг” (эстутум менен кооптуу операция) , "dofile" жана "loadfile" (FS мүмкүндүк алуу).
  • Статикалык кодду талдоо үчүн куралдар менен камсыз кылуу, каталарды аныктоо (линтер) жана типтердин туура колдонулушун текшерүү.
  • Өзүңүздүн жогорку өндүрүмдүү талдоочу, байт код котормочу жана компилятор. Luau азырынча JIT компиляциясын колдобойт, бирок Luau котормочу кээ бир учурларда LuaJIT менен иштөө жагынан бир топ окшош деп айтылат.

Source: opennet.ru

Комментарий кошуу