Luau, Lua kalbos tipo tikrinimo variantas, tampa atviruoju šaltiniu

Neseniai buvo paskelbta pirmosios versijos išleidimas nepriklausomas nuo programavimo kalbos luau, kuri tęsiama kuriant Lua ir yra suderinama su ankstesnėmis Lua 5.1 versijomis.

Luau kalba yra pirmiausia sukurtas scenarijų varikliams įterpti taikomosiose programose ir siekia didelio našumo bei mažo resursų suvartojimo. Projekto kodas parašytas C ++ ir yra atidarytas pagal MIT licenciją.

„Luau“ išplečia „Lua“ tipo tikrinimo galimybes ir kai kurias versijas naujos sintaktikos, pavyzdžiui, eilučių literalai. Kalba suderinama su ankstesnėmis Lua 5.1 versijomis ir iš dalies su naujesnėmis versijomis. Palaikoma „Lua Runtime“ API, leidžiantis Luau naudoti su jau esamais kodais ir nuorodomis.

Nuo šiandien Luau nebėra neatsiejama Roblox platformos dalis; yra nepriklausoma atvirojo kodo kalba.

Kalbos vykdymo laikas yra pagrįstas labai peržiūrėtu Lua 5.1 vykdymo kodu, tačiau vertėjas buvo visiškai perrašytas. Kūrimas apėmė keletą naujų optimizavimo metodų, kurie leido pasiekti didesnį našumą, palyginti su Lua.

Kai prieš 15 metų buvo sukurtas Roblox, kaip programavimo kalbą pasirinkome Lua. „Lua“ buvo maža, greita, lengvai integruojama ir išmokstama, o tai atvėrė didžiules galimybes mūsų kūrėjams.

Didžioji „Roblox“ dalis buvo sukurta „Lua“, įskaitant šimtus tūkstančių eilučių viduje sukurto kodo, kuris iki šių dienų veikia „Roblox“ programai ir „Roblox Studio“, ir milijonus kūrėjų sukurtų patirčių. Daugeliui iš jų tai buvo pirmoji programavimo kalba, kurią jie išmoko.

Projektą sukūrė Roblox ir jis naudojamas žaidimų platformos kode ir pritaikytose programose iš šios įmonės, įskaitant „Roblox Studio“ leidėją. Iš pradžių „Luau“ buvo kuriamas už uždarų durų, tačiau galiausiai buvo nuspręsta jį perkelti į atvirų projektų kategoriją, kad būtų galima toliau bendrai plėtoti dalyvaujant bendruomenei.

Pagrindinės funkcijos:

  • Nuosekliojo tipo sistema, užimanti tarpinę padėtį tarp dinaminio ir statinio rašymo. Luau leidžia statinį rašymą, kai reikia, nurodant tipo informaciją specialiomis anotacijomis.
  • The įmontuoti tipai „Bet koks“, „nulis“, „loginis“, „skaičius“, „eilutė“ ir „gija“. Tuo pačiu metu taip pat išsaugoma galimybė naudoti dinaminį spausdinimą, aiškiai neapibrėžiant kintamųjų ir funkcijų tipo.
  • Tiesioginių eilučių palaikymas (kaip Lua 5.3)
  • Išraiškos „tęsti“ palaikymas, be esamo raktinio žodžio „pertrauka“, kad pereitumėte prie naujos ciklo iteracijos.
  • Sudėtinių priskyrimo operatorių palaikymas
  • Parama naudojant sąlyginiai blokai "Jei-tai-kita" išraiškų forma, grąžinančia reikšmę, apskaičiuotą vykdant bloką. Bloke galite nurodyti bet kokį elseif teiginių skaičių.
  • Smėlio dėžės režimo buvimas kuri leidžia paleisti nepatikimą kodą. Šią funkciją galima naudoti norint sutvarkyti savo ir kito kūrėjo parašytą kodą, pavyzdžiui, trečiųjų šalių bibliotekas, kurioms negalima garantuoti, kad jie veiktų greta.
  • Standartinės bibliotekos, iš kurios buvo pašalintos funkcijos, galinčios sukelti saugos problemų, apribojimas. Pavyzdžiui, bibliotekos „io“ (prieiga prie failų ir paleidimo procesų), „paketas“ (prieiga prie failų ir įkėlimo modulių), „os“ (pašalintos funkcijos pasiekti failus ir keisti aplinkos kintamuosius), „Debug“ (nesaugus). atminties tvarkymas), „dofile“ ir „loadfile“ (prieiga prie failų sistemos).
  • Pateikite įrankius statinio kodo analizei, klaidų aptikimui (Linter) ir tipų naudojimui patvirtinti.
  • Analizatorius, baitų kodo interpretatorius ir didelio našumo patentuotas kompiliatorius.
  • Luau dar nepalaiko JIT kompiliavimo, tačiau teigiama, kad Luau vertėjas kai kuriose situacijose yra gana panašus į LuaJIT.

Pagaliau jei norite sužinoti daugiau apie tai, galite patikrinti išsamią informaciją Šioje nuorodoje.