Open source pro Luau, variantu jazyka Lua pro kontrolu typu

Oznámeno open source a zveřejnění prvního samostatného vydání programovacího jazyka Luau, který pokračuje ve vývoji jazyka Lua a je zpětně kompatibilní s Lua 5.1. Jazyk Luau je primárně určen pro vkládání skriptovacích strojů do aplikací a jeho cílem je dosáhnout vysokého výkonu a nízké spotřeby zdrojů. Kód projektu je napsán v C++ a je otevřen pod licencí MIT.

Luau rozšiřuje Lua o možnosti kontroly typu a některé nové syntaktické konstrukce, jako jsou řetězcové literály. Jazyk je zpětně kompatibilní s Lua 5.1 a částečně i s novějšími verzemi. Je podporováno rozhraní Lua Runtime API, které vám umožňuje používat Luau se stávajícím kódem a vazbami. Jazykový runtime je založen na silně přepracovaném kódu Lua runtime 5.1, ale interpret je kompletně přepsán. Během vývoje byly použity některé nové optimalizační techniky pro dosažení vyššího výkonu ve srovnání s Lua.

Projekt byl vyvinut společností Roblox a je použit v kódu herní platformy, her a uživatelských aplikací této společnosti, včetně editoru Roblox Studio. Zpočátku byl Luau vyvíjen za zavřenými dveřmi, ale nakonec bylo rozhodnuto o jeho převedení do kategorie otevřených projektů pro další společný vývoj za účasti komunity.

Klíčové vlastnosti:

  • Postupné psaní, zaujímající mezipolohu mezi dynamickým a statickým psaním. Luau vám umožňuje používat statické typování podle potřeby zadáním informací o typu prostřednictvím speciálních poznámek. K dispozici jsou vestavěné typy „any“, „nil“, „boolean“, „number“, „string“ a „thread“. Zároveň je zachována možnost použití dynamického typování bez explicitního definování typu proměnných a funkcí. funkce foo(x: číslo, y: řetězec): booleovská místní k: řetězec = y:rep(x) return k == konec „a“
  • Podpora řetězcových literálů (jako v Lua 5.3), jako je "\0x**" (hexadecimální číslo), "\u{**}" (znak Unicode) a "\z" (konec řádku), stejně jako schopnost vizualizace formátování čísel (lze napsat 1_000_000 místo 1000000), literály pro hexadecimální (0x...) a binární čísla (0b......).
  • Podpora výrazu „pokračovat“ doplňuje stávající klíčové slovo „break“ pro přechod na novou iteraci smyčky.
  • Podpora složených operátorů přiřazení (+=, -=, *=, /=, %=, ^=, ..=).
  • Podpora pro použití podmíněných bloků „if-then-else“ ve formě výrazů, které vracejí hodnotu vypočítanou při provádění bloku. V bloku můžete zadat libovolný počet výrazů elseif. local maxValue = if a > b then a else b local sign = if x < 0 then -1 elseif x > 0 then 1 else 0
  • Přítomnost režimu izolace (sandbox), který umožňuje spouštět nedůvěryhodný kód. Tuto funkci lze použít k uspořádání spuštění vedle vašeho vlastního kódu a kódu napsaného jiným vývojářem, například u knihoven třetích stran, jejichž bezpečnost nelze zaručit.
  • Omezení standardní knihovny, ze které byly odstraněny funkce, které by mohly potenciálně vytvářet bezpečnostní problémy. Například knihovny „io“ (přístup k souborům a spouštění procesů), „package“ (přístup k souborům a načítání modulů), „os“ (funkce pro přístup k souborům a změna proměnných prostředí), „debug“ (nebezpečná operace s pamětí) , „dofile“ a „loadfile“ (přístup FS).
  • Poskytování nástrojů pro statickou analýzu kódu, identifikaci chyb (linter) a kontrolu správného použití typů.
  • Vlastní vysoce výkonný parser, interpret a kompilátor bytecode. Luau zatím nepodporuje kompilaci JIT, ale tvrdí se, že interpret Luau je v některých situacích výkonově zcela srovnatelný s LuaJIT.

Zdroj: opennet.ru

Přidat komentář