Atvērtais avots Luau — Lua valodas tipa pārbaudes variantam

Paziņoja par atvērtā koda Luau programmēšanas valodas pirmās atsevišķās versijas izdošanu un publicēšanu, turpinot Lua valodas attīstību un ir saderīga ar Lua 5.1. Luau ir paredzēts galvenokārt skriptu programmu iegulšanai lietojumprogrammās, un tā mērķis ir sasniegt augstu veiktspēju un zemu resursu patēriņu. Projekta kods ir rakstīts C++ valodā un ir atvērts saskaņā ar MIT licenci.

Luau paplašina Lua ar tipa pārbaudes iespējām un dažām jaunām sintaktiskām konstrukcijām, piemēram, virkņu literāļiem. Valoda ir saderīga ar Lua 5.1 un daļēji ar jaunākām versijām. Tiek atbalstīts Lua Runtime API, kas ļauj izmantot Luau ar esošu kodu un saitēm. Valodas izpildlaika pamatā ir stipri pārstrādāts Lua izpildlaika 5.1 kods, taču tulks ir pilnībā pārrakstīts. Izstrādes laikā tika izmantotas dažas jaunas optimizācijas metodes, lai sasniegtu augstāku veiktspēju salīdzinājumā ar Lua.

Projektu izstrādāja Roblox, un tas tiek izmantots šī uzņēmuma spēļu platformas kodā, spēlēs un lietotāju lietojumprogrammās, tostarp Roblox Studio redaktorā. Sākotnēji Luau tika izstrādāts aiz slēgtām durvīm, taču beigās tika nolemts to pārcelt uz atvērto projektu kategoriju tālākai kopīgai attīstībai ar sabiedrības līdzdalību.

Galvenās iezīmes:

  • Pakāpeniska rakstīšana, ieņemot starpposmu starp dinamisko un statisko rakstīšanu. Luau ļauj pēc vajadzības izmantot statisko rakstīšanu, norādot veida informāciju, izmantojot īpašas anotācijas. Tiek nodrošināti iebūvētie veidi "jebkurš", "nulle", "būla", "skaitlis", "string" un "pavediens". Tajā pašā laikā tiek saglabāta iespēja izmantot dinamisko rakstīšanu, nepārprotami definējot mainīgo un funkciju veidu. funkcija foo(x: skaitlis, y: virkne): Būla lokālais k: virkne = y:rep(x) return k == “a” beigas
  • Atbalsts virkņu literāļiem (kā Lua 5.3), piemēram, "\0x**" (heksadecimālais skaitlis), "\u{**}" (unikoda rakstzīme) un "\z" (rindas beigas), kā arī spēja vizualizēt skaitļu formatējumu (var rakstīt 1_000_000, nevis 1000000), literāļus heksadecimālajiem (0x...) un binārajiem skaitļiem (0b......).
  • Atbalsts izteiksmei "turpināt", kas papildina esošo "break" atslēgvārdu, lai pārietu uz jaunu cilpas iterāciju.
  • Atbalsts saliktajiem piešķiršanas operatoriem (+=, -=, *=, /=, %=, ^=, ..=).
  • Atbalsts nosacījumu "ja-tad-cits" bloku izmantošanai izteiksmju veidā, kas atgriež bloka izpildes laikā aprēķināto vērtību. Blokā var norādīt patvaļīgu skaitu elseif izteiksmju. vietējā maxValue = ja a > b tad a else b vietējā zīme = ja x < 0, tad -1 elseif x > 0 tad 1 else 0
  • Izolācijas režīma (smilškastes) klātbūtne, kas ļauj palaist neuzticamu kodu. Šo funkciju var izmantot, lai organizētu palaišanu blakus savam kodam un cita izstrādātāja rakstītam kodam, piemēram, trešo pušu bibliotēkām, kuru drošību nevar garantēt.
  • Ierobežojums standarta bibliotēkai, no kuras ir noņemtas funkcijas, kas varētu radīt drošības problēmas. Piemēram, bibliotēkas “io” (piekļuve failiem un palaišanas procesi), “package” (piekļuve failiem un moduļu ielāde), “os” (funkcijas piekļūt failiem un mainīt vides mainīgos), “debug” (nedroša darbība ar atmiņu) , “dofile” un “loadfile” (FS piekļuve).
  • Rīku nodrošināšana statiskā koda analīzei, kļūdu identificēšanai (linter) un tipu pareizas izmantošanas pārbaudei.
  • Savs augstas veiktspējas parsētājs, baitkoda tulks un kompilators. Luau vēl neatbalsta JIT kompilāciju, taču tiek apgalvots, ka Luau tulks dažās situācijās ir diezgan salīdzināms ar LuaJIT.

Avots: opennet.ru

Pievieno komentāru