Bol vstupný kód Luau, varianty programovacieho jazyka Lua s kontrolou typov

Bolo oznámené otvorenie zdrojových kódov a publikovanie prvej samostatnej verzie programovacieho jazyka Luau, ktorý pokračuje vo vývoji jazyka Lua a je spätne kompatibilný s Lua 5.1. Jazyk Luau je určený predovšetkým na zabudovanie skriptovacích procesorov do aplikácií a zameriava sa na dosiahnutie vysokého výkonu a nízkej spotreby zdrojov. Kód projektu je napísaný v jazyku C++ a je otvorený pod licenciou MIT.

Luau rozširuje Lua o funkcie na kontrolu typov a niektoré nové syntaktické konštrukcie, ako sú reťazcové literály. Jazyk je spätne kompatibilný s Lua 5.1 a čiastočne aj s novšími verziami. Podporuje API Lua Runtime, čo umožňuje používanie Luau s existujúcim kódom a prepojeniami (binding). Jazykový runtime je založený na výrazne prepracovanom kóde Lua runtime 5.1, avšak interpreter bol úplne prepísaný. Pri vývoji boli použité niektoré nové optimalizačné techniky, ktoré umožnili dosiahnuť vyšší výkon v porovnaní s Lua.

Projekt bol vyvinutý spoločnosťou Roblox a používa sa v kóde hernej platformy, hier a používateľských aplikácií tejto spoločnosti, vrátane editora Roblox Studio. Pôvodne sa Luau vyvíjal za zatvorenými dverami, no nakoniec sa rozhodli previesť ho do sféry otvorených projektov na ďalší spoločný vývoj s účasťou komunity.

Hlavné vlastnosti:

  • Postupný systém typov (Gradual typing), ktorý zaujíma medzičlánok medzi dynamickou a statickou typizáciou. Luau umožňuje používanie statickej typizácie podľa potreby, pričom sa informácie o typoch uvádzajú pomocou špeciálnych anotácií. Sú poskytované vstavané typy „any“, „nil“, „boolean“, „number“, „string“ a „thread“. Zároveň sa zachováva aj možnosť používať dynamickú typizáciu bez explicitného určovania typu premenných a funkcií. function foo(x: number, y: string): boolean local k: string = y:rep(x) return k == "a" end
  • Podpora reťazcových literálov (ako v Lua 5.3), ako sú „\0x**“ (hexadecimálne číslo), „\u{**}“ (Unicode znak) a „\z“ (koniec riadku), ako aj možnosť prehľadného formátovania čísel (môžete písať 1_000_000 namiesto 1000000), literály pre hexadecimálne (0x…) a dvojkové čísla (0b…….).
  • Podpora výrazu „continue“, ktorý dopĺňa existujúce kľúčové slovo „break“, na prechod k novej iterácii cyklu.
  • Podpora zložených priradení (+=, -=, *=, /=, %=, ^=, ..=).
  • Podpora používania podmienečných blokov „if-then-else“ vo forme výrazov, ktoré vracajú hodnotu vypočítanú počas vykonávania bloku. Je povolené uvádzať ľubovoľný počet výrazov elseif v bloku. local maxValue = if a > b then a else b local sign = if x 0 then 1 else 0
  • Existencia režimu izolácie (sandbox), ktorý umožňuje spúšťať nedôveryhodný kód. Túto možnosť je možné využiť na súbežné spúšťanie vlastného kódu a kódu napísaného inými vývojármi, napríklad externých knižníc, ktorých bezpečnosť nemožno zaručiť.
  • Obmedzenie štandardnej knižnice, z ktorej boli odstránené funkcie, ktoré potenciálne môžu spôsobovať problémy so zabezpečením. Napríklad zo štandardného súboru boli vylúčené knižnice „io“ (prístup k súborom a spúšťanie procesov), „package“ (prístup k súborom a načítanie modulov), „os“ (odstránené funkcie prístupu k súborom a zmeny premenných prostredia), „debug“ (nebezpečná práca s pamäťou), „dofile“ a „loadfile“ (prístup k FС).
  • Poskytovanie nástrojov na statickú analýzu kódu, identifikáciu chýb (linter) a kontrolu správneho používania typov.
  • Vlastný vysoce výkonný parser, interpret bytecode a kompilátor. Luau zatiaľ nepodporuje JIT kompiláciu, ale tvrdí sa, že interpret Luau je v niektorých situáciách výkonnostne porovnateľný s LuaJIT.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster