Otvoreni kod za Luau, varijantu jezika Lua za provjeru tipa

Najavio otvoreni kod i objavljivanje prvog samostalnog izdanja programskog jezika Luau, nastavljajući razvoj jezika Lua i kompatibilan s prethodnim verzijama Lua 5.1. Luau je prvenstveno dizajniran za ugradnju motora za skriptiranje u aplikacije i ima za cilj postizanje visokih performansi i niske potrošnje resursa. Projektni kod je napisan u C++ i otvoren je pod MIT licencom.

Luau proširuje Lua s mogućnostima provjere tipa i nekim novim sintaktičkim konstrukcijama kao što su string literali. Jezik je unatrag kompatibilan s Lua 5.1 i djelomično s novijim verzijama. Lua Runtime API je podržan, što vam omogućuje da koristite Luau s postojećim kodom i vezama. Izvršno vrijeme jezika temelji se na uvelike prerađenom Lua runtime 5.1 kodu, ali je tumač u potpunosti prepisan. Tijekom razvoja korištene su neke nove tehnike optimizacije za postizanje većih performansi u usporedbi s Luom.

Projekt je razvio Roblox i koristi se u kodu gaming platforme, igara i korisničkih aplikacija ove tvrtke, uključujući i Roblox Studio editor. U početku je Luau razvijan iza zatvorenih vrata, ali na kraju je odlučeno da se prebaci u kategoriju otvorenih projekata za daljnji zajednički razvoj uz sudjelovanje zajednice.

Glavne značajke:

  • Postupno tipkanje, zauzima srednji položaj između dinamičkog i statičkog tipkanja. Luau vam omogućuje korištenje statičkog tipkanja po potrebi određivanjem informacija o tipu kroz posebne zabilješke. Dostupni su ugrađeni tipovi "any", "nil", "boolean", "number", "string" i "thread". Istodobno je sačuvana mogućnost korištenja dinamičkog tipkanja bez eksplicitnog definiranja tipa varijabli i funkcija. funkcija foo(x: broj, y: niz): boolean lokalni k: niz = y:rep(x) return k == “a” kraj
  • Podrška za string literale (kao u Lua 5.3) kao što su "\0x**" (heksadecimalni broj), "\u{**}" (Unicode znak) i "\z" (kraj retka), kao i mogućnost vizualizacije oblikovanja brojeva (možete napisati 1_000_000 umjesto 1000000), literala za heksadecimalne (0x...) i binarne brojeve (0b......).
  • Podrška za izraz "nastavi", koji nadopunjuje postojeću ključnu riječ "break", za prelazak na novu iteraciju petlje.
  • Podrška za složene operatore dodjele (+=, -=, *=, /=, %=, ^=, ..=).
  • Podrška za korištenje uvjetnih blokova "if-then-else" u obliku izraza koji vraćaju vrijednost izračunatu tijekom izvođenja bloka. Možete navesti proizvoljan broj elseif izraza u bloku. lokalna maxVrijednost = ako je a > b onda a else b lokalni znak = ako je x < 0 onda -1 else ako je x > 0 onda je 1 else 0
  • Prisutnost izolacijskog načina rada (sandbox), koji vam omogućuje pokretanje nepouzdanog koda. Ova se značajka može koristiti za organiziranje pokretanja paralelno s vašim vlastitim kodom i kodom koji je napisao drugi programer, na primjer, biblioteke treće strane za čiju sigurnost ne možemo jamčiti.
  • Ograničenje standardne biblioteke iz koje su uklonjene funkcije koje bi potencijalno mogle stvoriti sigurnosne probleme. Na primjer, biblioteke “io” (pristup datotekama i pokretanje procesa), “package” (pristup datotekama i učitavanje modula), “os” (funkcije za pristup datotekama i mijenjanje varijabli okoline), “debug” (nesiguran rad s memorijom) , “dofile” i “loadfile” (FS pristup).
  • Pružanje alata za statičku analizu koda, prepoznavanje pogrešaka (linter) i provjeru ispravne upotrebe tipova.
  • Vlastiti parser visokih performansi, interpreter bajt-koda i kompajler. Luau još ne podržava JIT kompilaciju, ali se tvrdi da je Luau interpreter prilično usporediv u izvedbi s LuaJIT-om u nekim situacijama.

Izvor: opennet.ru

Dodajte komentar