Öt év fejlesztés után elérhető kiadás Lua 5.4, egy gyors és kompakt szkript programozási nyelv, amelyet széles körben használnak beágyazott nyelvként (például konfiguráció meghatározásához vagy bővítmények írásához). A Lua értelmező kód C és nyelven van írva forgalmazza az MIT engedélye alapján.
A Lua az egyszerű procedurális szintaxist hatékony adatleíró képességekkel egyesíti az asszociatív tömbök és a nyelv bővíthető szemantikája révén. A Lua dinamikus gépelést használ, a nyelvi konstrukciókat bájtkódokká alakítva, amelyek egy regiszteralapú virtuális gép tetején futnak automatikus szemétgyűjtéssel. Maga az interpreter olyan könyvtárnak készült, amely könnyen integrálható C és C++ nyelvű projektekbe.
Megvalósult a szemétgyűjtő új üzemmódja - "nemzedéki“, amely kiegészítette a korábban elérhető növekményes szemétszállítási módot. Az új módban gyakrabban fut egy rövidített feltérképezés, amely csak a nemrégiben létrehozott objektumokat fedi le. Az összes objektum teljes bejárása csak akkor történik meg, ha rövid bejárás után nem sikerült elérni a kívánt memóriafelhasználást. Ezzel a megközelítéssel nagyobb teljesítményt érhet el és csökkentheti a memóriafelhasználást, ha nagyszámú, rövid ideig élő objektumot tárol.
Hozzáadtuk a „const” attribútummal definiált állandó változók meghatározásának képességét. Az ilyen változók csak egyszer rendelhetők hozzá, és az inicializálás után nem módosíthatók.
Hozzáadott változók támogatása "bezárandó", amelyek a "close" attribútummal vannak hozzárendelve, és állandó helyi változókra hasonlítanak (a const attribútummal), és abban különböznek tőlük, hogy az érték zárva van (a "__close" metódust hívják), amikor elhagyja a hatókört, például, a blokk normál befejezése után hiba esetén áttérés a break/goto/return használatával vagy kilépés.
Típus "felhasználói adat", amely lehetővé teszi, hogy bármilyen C-adatot Lua-változókban tároljon (adatblokkot jelent a memóriában vagy C-mutatót tartalmaz), mostantól több értéket is tartalmazhat (több metatáblázattal rendelkezik).
Bemutatjuk az álvéletlen számok generálására szolgáló függvény új megvalósítását - math.random.
Figyelmeztetések rendszere hozzáadva, amelyek a kifejezés használatával határozhatók meg figyelmeztet és a hibáktól eltérően nem befolyásolják a program további végrehajtását.
Hibakeresési információk hozzáadva a függvényargumentumokhoz és a visszatérési értékekhez.
Új szemantikát javasoltak az egész számok ciklusokban történő felsorolására "mert". Az iterációk számát a ciklus megkezdése előtt számítják ki, ami elkerüli a változó túlcsordulást és a hurkot. Ha a kezdeti érték nagyobb, mint a határérték, hibaüzenet jelenik meg.
funkcióbanstring.gmatch' hozzáadott egy új opcionális 'init' argumentumot, amely meghatározza, hogy melyik pozícióban induljon a keresés (alapértelmezés szerint 1 karaktertől).
Új funkciók hozzáadvalua_resetthread' (visszaállítja a szálat, törli a teljes hívási veremet és bezárja az összes "bezárandó" változót) és 'korutin.bezár' (bezárja a korutint és az összes kapcsolódó "bezárandó" változót).
A karakterláncok számokká alakítására szolgáló függvények átkerültek a "karakterlánc" könyvtárba.
A memóriafoglalási funkció hívása most sikertelen lehet, ha a memóriablokk mérete csökken.
funkcióbanstring.formátum' hozzáadta az új „%p” formátum-specifikáció támogatását (a lua_topointer által visszaadott mutató).
Az utf8 könyvtár támogatást nyújt karakterkódok 2^31-ig terjedő számokkal.