Avatud lähtekoodiga Luau, Lua keele tüübikontrolli variant

Teatas avatud lähtekoodiga programmeerimiskeele Luau esimese eraldiseisva väljaande avaldamisest ja avaldamisest, jätkates Lua keele arendamist ja tagasiühilduvust Lua 5.1-ga. Luau on mõeldud peamiselt skriptimismootorite manustamiseks rakendustesse ning selle eesmärk on saavutada kõrge jõudlus ja madal ressursikulu. Projekti kood on kirjutatud C++ keeles ja on avatud MIT litsentsi all.

Luau laiendab Lua tüübikontrolli võimaluste ja mõnede uute süntaktiliste konstruktsioonidega, nagu stringiliteraalid. Keel on tagasiühilduv Lua 5.1 ja osaliselt uuemate versioonidega. Lua Runtime API on toetatud, mis võimaldab teil kasutada Luaud olemasoleva koodi ja sidemetega. Keele käitusaeg põhineb põhjalikult ümbertöödeldud Lua käitusaja 5.1 koodil, kuid tõlk on täielikult ümber kirjutatud. Arendustöö käigus kasutati Luaga võrreldes suurema jõudluse saavutamiseks mõningaid uusi optimeerimistehnikaid.

Projekti töötas välja Roblox ja seda kasutatakse selle ettevõtte mänguplatvormi, mängude ja kasutajarakenduste koodis, sealhulgas Roblox Studio redaktoris. Algselt arendati Luaud kinniste uste taga, kuid lõpuks otsustati see viia avatud projektide kategooriasse edasiseks ühiseks arendamiseks kogukonna osalusel.

Põhijooned:

  • Järkjärguline tippimine, mis asub dünaamilise ja staatilise tippimise vahel. Luau võimaldab vajaduse korral kasutada staatilist tippimist, täpsustades tüübiteavet spetsiaalsete märkuste kaudu. Pakutakse sisseehitatud tüübid "any", "null", "boolean", "number", "string" ja "thread". Samas säilib võimalus kasutada dünaamilist tippimist ilma muutujate ja funktsioonide tüüpe selgesõnaliselt määratlemata. funktsioon foo(x: arv, y: string): tõeväärtus kohalik k: string = y:rep(x) return k == “a” lõpp
  • Stringiliteraalide tugi (nagu versioonis Lua 5.3), nagu "\0x**" (kuueteistkümnendsüsteem), "\u{**}" (Unicode-märk) ja "\z" (rea lõpp), samuti võime visualiseerida numbrite vormindamist (1 asemel võite kirjutada 000_000_1000000), kuueteistkümnendsüsteemi (0x...) ja kahendarvude (0b......) literaale.
  • Avaldise "jätka" tugi, mis täiendab olemasolevat märksõna "break", et hüpata uuele tsükli iteratsioonile.
  • Liitmääramisteate (+=, -=, *=, /=, %=, ^=, ..=) tugi.
  • Tingimuslike "kui-siis-muidu" plokkide kasutamise tugi avaldiste kujul, mis tagastavad ploki täitmisel arvutatud väärtuse. Plokis saate määrata suvalise arvu elseif-avaldisi. kohalik maxValue = kui a > b siis a else b kohalik märk = kui x < 0, siis -1 elseif x > 0 siis 1 else 0
  • Isolatsioonirežiimi (liivakasti) olemasolu, mis võimaldab käivitada ebausaldusväärset koodi. Seda funktsiooni saab kasutada käivitamise korraldamiseks enda koodi ja teise arendaja kirjutatud koodi kõrvale, näiteks kolmanda osapoole teegid, mille turvalisust ei saa garanteerida.
  • Standardteegi piirang, millest on eemaldatud funktsioonid, mis võivad põhjustada turvaprobleeme. Näiteks teegid "io" (juurdepääs failidele ja protsesside käivitamine), "pakett" (juurdepääs failidele ja moodulitele laadimine), "os" (failidele juurdepääsu ja keskkonnamuutujate muutmise funktsioonid), "silumine" (mäluga ebaturvaline töö) , "dofile" ja "loadfile" (FS-juurdepääs).
  • Tööriistade pakkumine staatilise koodi analüüsiks, vigade tuvastamiseks (linter) ja tüüpide õige kasutamise kontrollimiseks.
  • Oma suure jõudlusega parser, baitkoodi tõlgendaja ja kompilaator. Luau ei toeta veel JIT-i koostamist, kuid väidetavalt on Luau tõlk mõnes olukorras LuaJIT-iga üsna võrreldav.

Allikas: opennet.ru

Lisa kommentaar