Odprta je koda Luau, različice jezika Lua s preverjanjem tipov

Najavljeno je otvaranje izvornih kodova i objava prvog posebnog izdanja programskog jezika Luau, koji nastavlja razvoj jezika Lua i unazad je kompatibilan sa Lua 5.1. Jezik Luau je prvenstveno namijenjen za ugrađivanje rukovalaca scenarija u aplikacije i fokusira se na postizanje visoke performanse i niske potrošnje resursa. Kod projekta je napisan u C++ jeziku i otvoren je pod MIT licencom.

Luau proširuje Lua mogućnostima za provjeru tipova i nekim novim sintaktičkim konstrukcijama, poput string literala. Jezik je unazad kompatibilan sa Lua 5.1 i djelomično sa novijim verzijama. Podržava Lua Runtime API, što omogućava korištenje Luau s već postojećim kodom i vezama (binding). Radno okruženje jezika temelji se na značajno preradi koda Lua runtime 5.1, ali je interpreter potpuno prepisan. Tokom razvoja korištene su nove tehnike optimizacije, koje su dovele do većih performansi u odnosu na Lua.

Projekt je razvila kompanija Roblox i koristi se u kodu igre platforme, igara i korisničkih aplikacija te kompanije, uključujući editor Roblox Studio. Luau je prvobitno razvijan zatvorenim procesom, ali je na kraju odlučeno da se prevede u otvoreni projekt za daljnji zajednički razvoj uz sudjelovanje zajednice.

Ključne karakteristike:

  • Sekvencijalni sistem tipova (Gradual typing), koji zauzima srednjo mesto između dinamičkog i statičkog tipiziranja. Luau omogućava korištenje statičkog tipiziranja po potrebi, putem posebnih oznaka za tipove. Dostupni su ugrađeni tipovi „any“, „nil“, „boolean“, „number“, „string“ i „thread“. Također, zadržana je mogućnost korištenja dinamičkog tipiziranja bez eksplicitne definicije tipova varijabli i funkcija. function foo(x: number, y: string): boolean local k: string = y:rep(x) return k == “a” end
  • Podrška za string literale (kao u Lua 5.3), kao što su „\0x**“ (heksadecimalni broj), „\u{**}“ (Unicode simbol) i „\z“ (kraj stringa), a također i mogućnost vizualnog formatiranja brojeva (može se pisati 1_000_000 umjesto 1000000), literali za heksadecimalne (0x…) i binarne brojeve (0b…….).
  • Podrška za izraz „continue“, koji dopunjuje postojeću ključnu riječ „break“, za prelazak na novu iteraciju petlje.
  • Podpora sestavljenih operatorjev dodeljevanja (+=, -=, *=, /=, %=, ^=, ..=).
  • Podpora uporabi pogojnih blokov »if-then-else« v obliki izrazov, ki vračajo vrednost, izračunano med izvajanjem bloka. Dovoljeno je navajanje poljubnega števila izrazov elseif v bloku. local maxValue = if a > b then a else b local sign = if x 0 then 1 else 0
  • Obstoja način izolacije (sandbox), ki omogoča izvajanje nezanesljive kode. To funkcionalnost je mogoče uporabiti za organizacijo sočasnega izvajanja lastne kode in kode, napisane s strani drugega razvijalca, na primer, zunanjih knjižnic, za katerih varnost ne moremo jamčiti.
  • Omejitev standardne knjižnice, iz katere so odstranjene funkcije, ki lahko potencialno povzročijo težave z varnostjo. Na primer, iz standardne zbirke so izključene knjižnice „io“ (dostop do datotek in izvajanje procesov), „package“ (dostop do datotek in nalaganje modulov), „os“ (odstranjene funkcije dostopa do datotek in spremembe spremenljivk okolja), „debug“ (nevarno delo s pomnilnikom), „dofile“ in „loadfile“ (dostop do FS).
  • Zagotavljanje orodij za statično analizo kode, odkrivanje napak (linter) in preverjanje pravilne uporabe tipov.
  • Lastni visoko zmogljivi parser, interpretor bajtkod in kompilator. Luau trenutno ne podpira JIT-kompilacije, vendar se trdi, da je interpretor Luau v nekaterih situacijah povsem primerljiv po zmogljivosti z LuaJIT.

Izvor: opennet.ru

Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki 🔥 Kupite zanesljivo gostovanje za spletne strani z zaščito pred DDoS, VPS VDS strežniki | ProHoster