Otvorený zdroj pre Luau, variant jazyka Lua na kontrolu typu

Oznámený open source a zverejnenie prvého samostatného vydania programovacieho jazyka Luau, ktorý pokračuje vo vývoji jazyka Lua a je spätne kompatibilný s Lua 5.1. Luau je určený predovšetkým na vkladanie skriptovacích motorov do aplikácií a jeho cieľom je dosiahnuť vysoký výkon a nízku spotrebu zdrojov. Kód projektu je napísaný v C++ a je otvorený pod licenciou MIT.

Luau rozširuje Lua o možnosti kontroly typu 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. Rozhranie Lua Runtime API je podporované, čo vám umožňuje používať Luau s existujúcim kódom a väzbami. Jazykový runtime je založený na výrazne prepracovanom kóde Lua runtime 5.1, ale interpret je úplne prepísaný. Počas vývoja boli použité niektoré nové optimalizačné techniky na dosiahnutie vyššieho výkonu 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 rozhodlo o jeho preradení do kategórie otvorených projektov pre ďalší spoločný rozvoj za účasti komunity.

Hlavné funkcie:

  • Postupné písanie, ktoré zaujíma medzipolohu medzi dynamickým a statickým písaním. Luau vám umožňuje používať statické písanie podľa potreby špecifikovaním informácií o type prostredníctvom špeciálnych anotácií. K dispozícii sú vstavané typy „any“, „nil“, „boolean“, „number“, „string“ a „thread“. Zároveň je zachovaná možnosť využitia dynamického typovania bez explicitného definovania typu premenných a funkcií. funkcia foo(x: číslo, y: reťazec): boolovská lokálna k: reťazec = y:rep(x) return k == koniec „a“
  • Podpora reťazcových literálov (ako v Lua 5.3), ako napríklad "\0x**" (hexadecimálne číslo), "\u{**}" (znak Unicode) a "\z" (koniec riadku), ako aj schopnosť vizualizovať formátovanie čísel (môžete napísať 1_000_000 namiesto 1000000), literály pre hexadecimálne (0x...) a binárne čísla (0b......).
  • Podpora výrazu „pokračovať“, ktorý dopĺňa existujúce kľúčové slovo „break“, na prechod na novú iteráciu cyklu.
  • Podpora pre zložené operátory priraďovania (+=, -=, *=, /=, %=, ^=, ..=).
  • Podpora používania podmienených blokov „if-then-else“ vo forme výrazov, ktoré vracajú hodnotu vypočítanú počas vykonávania bloku. V bloku môžete zadať ľubovoľný počet výrazov elseif. lokálna maxValue = ak a > b, potom a else b miestne znamienko = ak x < 0, potom -1 elseif x > 0, potom 1 inak 0
  • Prítomnosť režimu izolácie (sandbox), ktorý vám umožňuje spustiť nedôveryhodný kód. Túto funkciu možno použiť na usporiadanie spustenia vedľa vášho vlastného kódu a kódu napísaného iným vývojárom, napríklad knižníc tretích strán, ktorých bezpečnosť nemožno zaručiť.
  • Obmedzenie štandardnej knižnice, z ktorej boli odstránené funkcie, ktoré by mohli potenciálne vytvárať bezpečnostné problémy. Napríklad knižnice „io“ (prístup k súborom a spúšťanie procesov), „package“ (prístup k súborom a načítavanie modulov), „os“ (funkcie na prístup k súborom a zmena premenných prostredia), „ladenie“ (nebezpečná prevádzka s pamäťou) , „dofile“ a „loadfile“ (prístup FS).
  • Poskytovanie nástrojov na statickú analýzu kódu, identifikáciu chýb (linter) a kontrolu správneho použitia typov.
  • Vlastný vysoko výkonný parser, interpret a kompilátor bajtkódu. Luau zatiaľ nepodporuje kompiláciu JIT, ale tvrdí sa, že interpret Luau je v niektorých situáciách výkonovo celkom porovnateľný s LuaJIT.

Zdroj: opennet.ru

Pridať komentár