Megnyílt a Luau, a Lua típusellenőrzéssel is rendelkező változatának kódja

Bejelentették a Luau programozási nyelv forráskódjának megnyitását és az első külön kiadás publikálását, amely a Lua nyelv fejlesztését folytatja, és visszafelé kompatibilis a Lua 5.1-gyel. A Luau nyelvet elsősorban szkriptek beágyazására tervezték alkalmazásokba, és célja a magas teljesítmény és az alacsony erőforrás-felhasználás elérése. A projekt kódja C++ nyelven íródott, és MIT licenc alatt elérhető.

A Luau bővíti a Lua lehetőségeit típusellenőrzéssel és néhány új szintaxis-szerkezettel, mint például a sztringliterálok. A nyelv visszafelé kompatibilis a Lua 5.1-gyel, és részben a frissebb verziókkal is. Támogatja a Lua Runtime API-t, amely lehetővé teszi a Luau használatát a már létező kóddal és kötésekkel. A nyelvi runtime jelentős átdolgozáson ment keresztül a Lua 5.1 runtime kódján alapulva, azonban az interpreter teljesen újraírásra került. A fejlesztés során új optimalizálási technikák kerültek alkalmazásra, amelyek célja a Lua-hoz képest magasabb teljesítmény elérése.

A projektet a Roblox készítette, és a cég 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. Eredetileg a Luau elzárt ajtók mögött fejlődött, de végül úgy döntöttek, hogy átállnak egy nyílt projekt keretein belüli további közös fejlesztésre a közösség bevonásával.

Főbb jellemzők:

  • A fokozatos típusú rendszert (Gradual typing) alkalmazza, amely a dinamikus és statikus típusú rendszerek között helyezkedik el. A Luau lehetővé teszi a statikus típusok alkalmazását szükség szerint, a típusok információjának megadásával speciális annotációk segítségével. Beépített típusok állnak rendelkezésre, mint az „any”, „nil”, „boolean”, „number”, „string” és „thread”. Ezzel együtt lehetőség van dinamikus típusok használatára is, anélkül, hogy a változók és funkciók típusát kifejezetten meg kellene határozni. function foo(x: number, y: string): boolean local k: string = y:rep(x) return k == "a" end
  • Támogatja a sztringliterálokat (mint a Lua 5.3-ban), mint például „\0x**” (hexadecimális szám), „\u{**}” (Unicode karakter) és „\z” (sor vég), valamint a számok áttekinthető formázásának lehetőségét (lehetőség van 1_000_000 helyett 1000000 írni), hexadecimális (0x…) és bináris számok (0b…….) literáljait.
  • Támogatja a „continue” utasítást, amely kiegészíti a meglévő „break” kulcsszót, lehetővé téve az új ciklusiterációra való áttérést.
  • A hozzárendelési operátorok (+=, -=, *=, /=, %=, ^=, ..=) támogatása.
  • A "if-then-else" feltételes blokkok kifejezésként való felhasználásának támogatása, amely a blokk végrehajtása során kiszámított értéket ad vissza. Tetszőleges számúelseif kifejezés megadását is lehetővé teszi. local maxValue = if a > b then a else b local sign = if x 0 then 1 else 0
  • Izolációs (sandbox) mód lehetősége, amely lehetővé teszi a megbízhatatlan kód futtatását. Ezt a lehetőséget a saját kód és más fejlesztők által írt kód, például harmadik féltől származó könyvtárak biztonságának ellenőrzése mellett lehet használni.
  • Azoknak a funkcióknak a korlátozása, amelyek potenciális biztonsági problémákat okozhatnak, eltávolítva a standard könyvtárból. Például az 'io' könyvtár (fájlok és folyamatok hozzáférése), a 'package' (fájlok hozzáférése és modulok betöltéséhez), az 'os' (a fájlokhoz való hozzáférés és a környezeti változók módosításához szükséges funkciók eltávolítva), a 'debug' (memória kezelése), a 'dofile' és a 'loadfile' (FS hozzáférés) nem érhetők el a standard halmazból.
  • Eszközök biztosítása a kód statikus elemzéséhez, hibák (linter) feltárásához és a típusok helyes használatának ellenőrzéséhez.
  • Saját nagy teljesítményű parser, bájt-kód értelmező és fordító. A Luau egyelőre nem támogatja a JIT fordítást, de azt állítják, hogy a Luau értelmező bizonyos helyzetekben teljesítményében összehasonlítható a LuaJIT-tel.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster