Сарчашмаи кушода барои Луау, як варианти санҷиши навъи забони Луа

Манбаи кушода ва нашри аввалин версияи мустақили забони барномасозии Luau, идомаи рушди забони Луа ва ба ақиб бо Lua 5.1 мувофиқро эълон кард. Luau асосан барои ворид кардани муҳаррикҳои скриптӣ ба барномаҳо тарҳрезӣ шудааст ва ҳадафи он ноил шудан ба иҷрои баланд ва истеъмоли ками захираҳо мебошад. Рамзи лоиҳа дар C++ навишта шудааст ва таҳти иҷозатномаи MIT кушода аст.

Луау Луа-ро бо қобилиятҳои санҷиши намуд ва баъзе сохторҳои нави синтаксисӣ, аз қабили литералҳои сатр васеъ мекунад. Ин забон бо Lua 5.1 ва қисман бо версияҳои навтар мувофиқ аст. API-и Lua Runtime дастгирӣ карда мешавад, ки ба шумо имкон медиҳад, ки Luau-ро бо рамз ва пайвандҳои мавҷуда истифода баред. Вақти иҷроиши забон ба коди аз нав коркардшудаи Lua 5.1 асос ёфтааст, аммо тарҷумон комилан аз нав навишта шудааст. Ҳангоми таҳия, баъзе усулҳои нави оптимизатсия барои ноил шудан ба нишондиҳандаҳои баландтар дар муқоиса бо Луа истифода шуданд.

Лоиҳа аз ҷониби Roblox таҳия шудааст ва дар рамзи платформаи бозӣ, бозиҳо ва замимаҳои корбарии ин ширкат, аз ҷумла муҳаррири Roblox Studio истифода мешавад. Дар аввал, Луау паси дарҳои баста таҳия карда шуд, аммо дар ниҳоят тасмим гирифта шуд, ки он ба категорияи лоиҳаҳои кушода барои рушди минбаъдаи муштарак бо иштироки ҷомеа интиқол дода шавад.

Хусусиятҳои асосии:

  • Навиштани тадриҷан, ки мавқеи фосилавӣ байни чопкунии динамикӣ ва статикиро ишғол мекунад. Luau ба шумо имкон медиҳад, ки чопкунии статикиро дар ҳолати зарурӣ тавассути муайян кардани иттилооти намуд тавассути эзоҳҳои махсус истифода баред. Навъҳои дарунсохт "ягон", "нил", "boolean", "number", "string" ва "thread" таъмин карда шудаанд. Дар баробари ин, имконияти истифодаи чопкунии динамикӣ бидуни муайян кардани навъи тағирёбандаҳо ва функсияҳо нигоҳ дошта мешавад. функсияи foo(x: рақам, y: сатр): мантиқии k маҳаллӣ: сатр = y:rep(x) бозгашти k == "a" охири
  • Дастгирии литералҳои сатр (чун дар Lua 5.3), ба монанди "\0x**" (рақами шонздаҳӣ), "\u{**}" (аломати Юникод) ва "\z" (охири сатр), инчунин қобилияти тасаввур кардани форматкунии рақамҳо (шумо метавонед ба ҷои 1 000_000_1000000 нависед), литерал барои шонздаҳӣ (0x...) ва рақамҳои дуӣ (0b......).
  • Дастгирии ифодаи "идома", ки калимаи мавҷудаи "танаффус" -ро пурра мекунад, барои гузаштан ба итератсияи нави давр.
  • Дастгирии операторҳои таъиноти мураккаб (+=, -=, *=, /=, %=, ^=, ..=).
  • Дастгирии истифодаи блокҳои шартии "агар-он гоҳ-дигар" дар шакли ифодаҳое, ки арзиши ҳисобшударо ҳангоми иҷрои блок бармегардонанд. Шумо метавонед шумораи ихтиёрии ифодаҳои elseif-ро дар блок муайян кунед. maxValue маҳаллӣ = агар a > b пас a дигаре b аломати маҳаллӣ = агар x < 0 пас -1 elseif x > 0 пас 1 дигар 0
  • Мавҷудияти режими изолятсия (қуттии қум), ки ба шумо имкон медиҳад, ки рамзи нобоварро иҷро кунед. Ин хусусият метавонад барои ташкили паҳлӯ ба паҳлӯи рамзи худ ва рамзи аз ҷониби таҳиягари дигар навишташуда истифода шавад, масалан, китобхонаҳои тарафи сеюм, ки бехатарии онҳо кафолат дода намешавад.
  • Маҳдудияти китобхонаи стандартӣ, ки аз он функсияҳое, ки метавонанд мушкилоти амниятро эҷод кунанд, хориҷ карда шудаанд. Масалан, китобхонаҳои "io" (дастрасӣ ба файлҳо ва равандҳои оғозёбӣ), "баста" (дастрасӣ ба файлҳо ва боркунии модулҳо), "os" (функсияҳо барои дастрасӣ ба файлҳо ва тағир додани тағирёбандаҳои муҳити зист), "debug" (амалиёти хатарнок бо хотира) , "dofile" ва "loadfile" (дастрасии FS).
  • Таъмини асбобҳо барои таҳлили коди статикӣ, муайян кардани хатогиҳо (линтер) ва санҷиши истифодаи дурусти намудҳо.
  • Таҳлилгари сермахсул, тарҷумони байткод ва компилятори худ. Luau ҳанӯз тартиб додани JIT-ро дастгирӣ намекунад, аммо гуфта мешавад, ки тарҷумони Luau дар баъзе ҳолатҳо аз ҷиҳати иҷроиш бо LuaJIT хеле муқоисашаванда аст.

Манбаъ: opennet.ru

Илова Эзоҳ