Két év fejlesztés után, június 29-én csendben és halkan megjelent a Lua programozási nyelv új verziója, az 5.4.
A Lua egy egyszerű, értelmezhető programozási nyelv, amely könnyen integrálható alkalmazásokba. Ezen tulajdonságok miatt a Lua nyelvet széles körben használják a programok (különösen a számítógépes játékok) konfigurációjának kiterjesztésére vagy leírására. A Lua-t az MIT licence alatt forgalmazzák.
Az előző verzió (5.3.5) 10. július 2018-én jelent meg.
Főbb változások az új verzióban
új generációs szemétgyűjtő. A collectiongarbage függvényben a setpause és setstepmul paraméterek elavultak, és helyette a növekményes paraméter javasolt;
egy új funkció a figyelmeztető jelzések kiadására, amely lehetővé teszi azok megjelenítésének letiltását;
a math.random új megvalósítása a xoshiro256** algoritmust használja a biztosított libc helyett, és véletlen számmal inicializálja a generátort;
állandó változók;
A „bezárandó” változók olyan helyi állandók, amelyeknél a __close metódus végrehajtásra kerül a hatókör elhagyásakor;
új függvény lua_resetthread - törli a veremet és bezárja az összes „zárt” változót;
új függvény coroutine.close - bezárja a megadott korutint és annak összes „zárt” változóját;
A felhasználói adatok tartalmazhatnak egy index által elért értékkészletet. Új funkciókat vezettek be a velük való együttműködéshez: lua_newuserdatauv, lua_setiuservalue és lua_getiuservalue;
Hibakeresési információk állnak rendelkezésre a paraméterekről és a függvények visszatérési értékeiről;
ha egy for ciklusban egész indexet használunk, és túlcsordulás történik, a ciklus véget ér;
egy opcionális argumentum került hozzáadásra a string.gmatch függvényhez, amely megadja az eltolást a karakterlánc elejétől az egyezések kereséséhez;
A karakterláncok implicit számokká konvertáló függvényei átkerültek a karakterlánc-könyvtárba, és viselkedésük megváltozott. Például az "1" + "2" művelet eredménye most egy egész szám, nem pedig egy lebegőpontos szám;
a memóriafoglalás funkcióban hiba léphet fel a memóriablokk csökkentésekor;
új formázási szimbólum a string.format függvényben - %p (mutatókhoz);
az utf8 könyvtár 2³¹-ig fogad el karakterkódokat (ha speciális jelző van megadva, enélkül csak a 0x10FFFF-ig terjedő kódok megengedettek, és a helyettesítők nem engedélyezettek);
az értéktartományon kívüli egész állandók lebegő számokká alakulnak (korábban bitkivágás történt);
a __lt metamódszert már nem használják a __le metametódus emulálására, ha szükséges, a __le metamódszert kifejezetten meg kell adni;
nem hozható létre goto utasítás címke, ha az aktuális hatókörben már létezik azonos nevű címke (még akkor sem, ha a külső hatókörben volt definiálva);
A __gc metametódus több is lehet, mint egy függvény. Ha egy metódus hívására tett kísérlet sikertelen, a rendszer figyelmeztetést nyomtat;
a print függvény nem hívja meg a tostringet minden argumentumhoz, hanem a saját belső konverzióit használja;
az io.lines függvény egy helyett négy értéket ad vissza; a régi viselkedés emulálásához tegye zárójelbe a hívást, ha paraméterként adja át egy másik függvényhívásnak.
Forrás: linux.org.ru
