Odprta koda za Luau, različico jezika Lua za preverjanje tipa

Napovedal odprtokodnost in objavo prve samostojne izdaje programskega jezika Luau, ki nadaljuje razvoj jezika Lua in je združljiv nazaj z Lua 5.1. Luau je zasnovan predvsem za vgradnjo skriptnih mehanizmov v aplikacije in želi doseči visoko zmogljivost in nizko porabo virov. Koda projekta je napisana v C++ in je odprta pod licenco MIT.

Luau razširja Lua z zmožnostmi preverjanja tipa in nekaterimi novimi sintaktičnimi konstrukcijami, kot so nizovni literali. Jezik je nazaj združljiv z Lua 5.1 in delno z novejšimi različicami. Podprt je Lua Runtime API, ki vam omogoča uporabo Luau z obstoječo kodo in vezavami. Izvajalno okolje jezika temelji na močno predelani kodi izvajalnega okolja Lua 5.1, vendar je tolmač v celoti napisan na novo. Med razvojem je bilo uporabljenih nekaj novih optimizacijskih tehnik za doseganje višje zmogljivosti v primerjavi z Luo.

Projekt je razvil Roblox in se uporablja v kodi igralne platforme, iger in uporabniških aplikacij tega podjetja, vključno z urejevalnikom Roblox Studio. Sprva je bil Luau razvit za zaprtimi vrati, vendar je bilo na koncu odločeno, da se prenese v kategorijo odprtih projektov za nadaljnji skupni razvoj s sodelovanjem skupnosti.

Glavne značilnosti:

  • Postopno tipkanje, ki zavzema vmesni položaj med dinamičnim in statičnim tipkanjem. Luau vam omogoča uporabo statičnega tipkanja, kot je potrebno, tako da podate informacije o vrsti s posebnimi opombami. Na voljo so vgrajeni tipi "any", "nil", "boolean", "number", "string" in "thread". Hkrati je ohranjena možnost uporabe dinamičnega tipkanja brez eksplicitne definicije vrste spremenljivk in funkcij. funkcija foo(x: število, y: niz): logično lokalno k: niz = y:rep(x) return k == “a” konec
  • Podpora za nizovne literale (kot v Lua 5.3), kot so "\0x**" (šestnajstiško število), "\u{**}" (znak Unicode) in "\z" (konec vrstice), kot tudi sposobnost vizualizacije oblikovanja številk (lahko napišete 1_000_000 namesto 1000000), literalov za šestnajstiška (0x...) in binarna števila (0b......).
  • Podpora za izraz "nadaljuj", ki dopolnjuje obstoječo ključno besedo "break", za skok na novo ponovitev zanke.
  • Podpora za sestavljene operatorje dodeljevanja (+=, -=, *=, /=, %=, ^=, ..=).
  • Podpora za uporabo pogojnih blokov "if-then-else" v obliki izrazov, ki vrnejo vrednost, izračunano med izvajanjem bloka. V bloku lahko podate poljubno število izrazov elseif. lokalna maxValue = če a > b, potem a else b lokalni znak = če x < 0 potem -1 elseif x > 0 potem 1 else 0
  • Prisotnost izolacijskega načina (peskovnik), ki vam omogoča zagon nezaupljive kode. To funkcijo je mogoče uporabiti za organiziranje zagona vzporedno z vašo lastno kodo in kodo, ki jo je napisal drug razvijalec, na primer knjižnice tretjih oseb, za varnost katerih ni mogoče zagotoviti.
  • Omejitev standardne knjižnice, iz katere so bile odstranjene funkcije, ki bi lahko povzročile varnostne težave. Na primer, knjižnice »io« (dostop do datotek in zagon procesov), »package« (dostop do datotek in nalaganje modulov), »os« (funkcije za dostop do datotek in spreminjanje spremenljivk okolja), »debug« (nevarno delovanje s pomnilnikom) , “dofile” in “loadfile” (dostop FS).
  • Zagotavljanje orodij za statično analizo kode, prepoznavanje napak (linter) in preverjanje pravilne uporabe tipov.
  • Lasten visoko zmogljiv razčlenjevalnik, tolmač bajtne kode in prevajalnik. Luau še ne podpira prevajanja JIT, vendar se trdi, da je tolmač Luau v nekaterih situacijah po zmogljivosti precej primerljiv z LuaJIT.

Vir: opennet.ru

Dodaj komentar