Nyílt forráskód a Luau-hoz, amely a Lua nyelv típusellenőrző változata

Bejelentette a nyílt forráskódú Luau programozási nyelv első önálló kiadását, amely folytatja a Lua nyelv fejlesztését és visszafelé kompatibilis a Lua 5.1-el. A Luau-t elsősorban szkriptmotorok alkalmazásokba való beágyazására tervezték, és célja a nagy teljesítmény és az alacsony erőforrás-fogyasztás elérése. A projekt kódja C++ nyelven íródott, és az MIT licenc alatt van nyitva.

A Luau kiterjeszti a Lua-t típus-ellenőrzési lehetőségekkel és néhány új szintaktikai konstrukcióval, például karakterlánc-literálokkal. A nyelv visszafelé kompatibilis a Lua 5.1-el és részben az újabb verziókkal. A Lua Runtime API támogatott, lehetővé téve a Luau használatát meglévő kóddal és kötésekkel. A nyelvi futási környezet egy alaposan átdolgozott Lua runtime 5.1-es kódon alapul, de az értelmező teljesen át van írva. A fejlesztés során néhány új optimalizálási technikát alkalmaztak a Lua-hoz képest nagyobb teljesítmény elérése érdekében.

A projektet a Roblox fejlesztette ki, és a vállalat játékplatformjának, játékainak és felhasználói alkalmazásainak kódjában használják, beleértve a Roblox Studio szerkesztőt is. Kezdetben a Luau-t zárt ajtók mögött fejlesztették ki, de végül úgy döntöttek, hogy a nyitott projektek kategóriájába helyezik át a közösség részvételével történő további közös fejlesztés érdekében.

Főbb jellemzői:

  • Fokozatos gépelés, közbenső pozíciót foglal el a dinamikus és a statikus gépelés között. A Luau lehetővé teszi a statikus gépelés használatát, ha speciális megjegyzéseken keresztül megadja a típusadatokat. A beépített „any”, „nil”, „boolean”, „number”, „string” és „thread” típusok rendelkezésre állnak. Ugyanakkor megmarad a dinamikus gépelés használatának lehetősége a változók és függvények típusának explicit meghatározása nélkül. függvény foo(x: szám, y: karakterlánc): logikai lokális k: string = y:rep(x) return k == “a” end
  • Karakterlánc-literálok támogatása (mint a Lua 5.3-ban), például a „\0x**” (hexadecimális szám), a „\u{**}” (Unicode karakter) és a „\z” (sor vége), valamint a számformázás (1 helyett 000_000_1000000), literálok hexadecimális (0x...) és bináris számok (0b......) megjelenítésének képessége.
  • A "continue" kifejezés támogatása, amely kiegészíti a meglévő "break" kulcsszót, hogy egy új ciklusiterációra ugorhasson.
  • Összetett hozzárendelési operátorok támogatása (+=, -=, *=, /=, %=, ^=, ..=).
  • Feltételes "ha-akkor-else" blokkok használatának támogatása olyan kifejezések formájában, amelyek a blokk végrehajtása során kiszámított értéket adják vissza. Egy blokkban tetszőleges számú elseif kifejezést adhat meg. helyi maxÉrték = ha a > b akkor a else b helyi jel = ha x < 0, akkor -1 elseif x > 0, akkor 1 else 0
  • Izolációs mód (sandbox) jelenléte, amely lehetővé teszi megbízhatatlan kód futtatását. Ezzel a funkcióval a saját kódja és egy másik fejlesztő által írt kód mellé rendezheti az indítást, például harmadik féltől származó könyvtárak esetében, amelyek biztonsága nem garantálható.
  • A szabványos könyvtár korlátozása, amelyből eltávolították azokat a funkciókat, amelyek biztonsági problémákat okozhatnak. Például: „io” (fájlok elérése és folyamatok elindítása), „package” (fájlok elérése és modulok betöltése), „os” (fájlok elérésére és a környezeti változók megváltoztatására szolgáló funkciók), „debug” (nem biztonságos működés a memóriával) könyvtárak. , „dofile” és „loadfile” (FS hozzáférés).
  • Eszközök biztosítása a statikus kódelemzéshez, a hibák azonosításához (linter) és a típusok helyes használatának ellenőrzéséhez.
  • Saját nagy teljesítményű értelmező, bájtkód értelmező és fordító. A Luau még nem támogatja a JIT-összeállítást, de állítólag a Luau-tolmács teljesítménye bizonyos helyzetekben teljesen összehasonlítható a LuaJIT-tel.

Forrás: opennet.ru

Hozzászólás