Nedávno bylo oznámeno vydání první verze nezávislý na programovacím jazyku luau, která pokračuje ve vývoji Lua a je také kompatibilní s předchozími verzemi Lua 5.1.
Jazyk Luau je určené především pro vkládání skriptovacích strojů v aplikacích a usiluje o dosažení 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é sestavení nové syntaktiky jako řetězcové literály. Jazyk je kompatibilní s předchozími verzemi Lua 5.1 a částečně s novějšími verzemi. Lua Runtime API je podporováno, umožňující použití Luau s již existujícími kódy a odkazy.
Ode dneška již Luau není nedílnou součástí platformy Roblox; je nezávislý open source jazyk.
Jazykový runtime je založen na silně revidovaném runtime kódu Lua 5.1, ale interpret byl kompletně přepsán. Vývoj zahrnoval některé nové optimalizační techniky, které umožnily dosáhnout vyššího výkonu ve srovnání s Lua.
Když před 15 lety vznikl Roblox, zvolili jsme jako programovací jazyk Lua. Lua byla malá, rychlá, snadno se integrovala a učila a našim vývojářům otevřela obrovské možnosti.
Velká část Robloxu byla postavena na Lua, včetně stovek tisíc řádků interně vyvinutého kódu, který dodnes pohání aplikaci Roblox a Roblox Studio, a miliony zkušeností, které vývojáři vytvořili. Pro mnohé z nich to byl první programovací jazyk, který se naučili.
Projekt byl vyvinut společností Roblox a používá se v kódu herní platformy a vlastních aplikacích od této společnosti, včetně vydavatele 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:
- Systém sekvenčního typu, který zaujímá mezipolohu mezi dynamickým a statickým zápisem. Luau umožňuje statické psaní podle potřeby zadáním informace o typu prostřednictvím speciálních poznámek.
- The vestavěné typy "Any", "nula", "boolean", "number", "string" a "thread". Zároveň je zachována i možnost používat dynamické typování bez explicitního definování typu proměnných a funkcí.
- Podpora pro doslovné řetězce (jako v Lua 5.3)
- Podpora výrazu „pokračovat“, kromě stávajícího klíčového slova „přerušit“, pro přechod na novou iteraci smyčky.
- Podpora pro operátory složeného přiřazení
- Podpora pro použití podmíněné bloky "If-then-else" ve formě výrazů, které vracejí hodnotu vypočítanou během provádění bloku. V bloku můžete zadat libovolný počet příkazů elseif.
- Přítomnost režimu sandbox což vám umožňuje spouštět nedůvěryhodný kód. Tuto funkci lze použít k uspořádání vlastního kódu a kódu napsaného jiným vývojářem, například knihoven třetích stran, které nelze zaručit, aby běžely vedle sebe.
- 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ěcím procesům), "package" (přístup k souborům a načítacím modulům), "os" (funkce pro přístup k souborům a změna proměnných prostředí byly odstraněny), "Debug" (nezabezpečené manipulace s pamětí), "dofile" a "loadfile" (přístup k systému souborů).
- Poskytněte nástroje pro analýzu statického kódu, detekci chyb (Linter) a ověřování použití typů.
- analyzátor, interpret bytecode a vysoce výkonný proprietární kompilátor.
- 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.
Konečně pokud máte zájem o tom vědět více, můžete zkontrolovat podrobnosti Na následujícím odkazu.