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.