Pēc divu gadu izstrādes 29. jūnijā klusi tika izlaista jauna Lua programmēšanas valodas versija — 5.4.
Lua ir vienkārši interpretējama programmēšanas valoda, ko var viegli iegult lietojumprogrammās. Šo īpašību dēļ Lua tiek plaši izmantota kā programmu (īpaši datorspēļu) paplašinājumu vai konfigurācijas valoda. Lua tiek izplatīta saskaņā ar MIT licenci.
Iepriekšējā versija (5.3.5) tika izlaista 2018. gada 10. jūlijā.
Galvenās izmaiņas jaunajā versijā
Jaunas paaudzes atkritumu savācējs. Funkcijā collectgarbage parametri setpause un setstepmul ir novecojuši; to vietā ieteicams izmantot inkrementālo parametru.
jauna funkcija brīdinājumu izdošanai ar iespēju atspējot to rādīšanu;
Jaunā math.random ieviešana izmanto xoshiro256** algoritmu libc piedāvātā algoritma vietā un inicializē ģeneratoru ar nejaušu skaitli;
konstanti mainīgie;
Mainīgie "to-be-close" ir lokālās konstantes, kurām, izejot no darbības jomas, tiek izpildīta metode __close;
jauna funkcija lua_resetthread — notīra steku un aizver visus "slēgtos" mainīgos;
jauna funkcija coroutine.close — aizver norādīto korutīnu un visus tās "slēgtos" mainīgos;
Lietotāja dati (userdata) var saturēt vērtību kopu, kurai piekļūst indekss. Darbam ar tiem ir ieviestas jaunas funkcijas: lua_newuserdatav, lua_setiuservalue un lua_getiuservalue;
ir pieejama atkļūdošanas informācija par funkciju parametriem un atgriešanas vērtībām;
Ja for ciklā tiek izmantots vesela skaitļa indekss un notiek pārpilde, cikls tiek pārtraukts;
Funkcijai string.gmatch ir pievienots papildu arguments, kas norāda nobīdi no virknes sākuma, lai meklētu atbilstības;
Netiešās virknes konvertēšanas uz skaitli funkcijas ir pārvietotas uz virkņu bibliotēku, un to darbība ir mainījusies. Piemēram, operācijas "1" + "2" rezultāts tagad ir vesels skaitlis, nevis peldošā komata skaitlis;
Atmiņas piešķiršanas funkcijā, samazinot atmiņas bloku, var rasties kļūda;
jauna formatēšanas rakstzīme funkcijā string.format — %p (rādītājiem);
UTF8 bibliotēka pieņem rakstzīmju kodus līdz 2³¹ (ja ir norādīts īpašs karodziņš, bez tā ir atļauti tikai kodi līdz 0x10FFFF, un surogātraksti nav atļauti);
Veselo skaitļu konstantes, kas atrodas ārpus diapazona, tiek konvertētas par peldošā komata skaitļiem (iepriekš notika bitu saīsināšana);
__lt metametode vairs netiek izmantota __le metametodes emulēšanai; ja nepieciešams, __le metametode ir jānorāda skaidri;
goto priekšraksta etiķeti nevar izveidot, ja pašreizējā darbības jomā jau pastāv etiķete ar tādu pašu nosaukumu (pat ja tā ir definēta ārējā darbības jomā);
__gc metametode var būt jebkas no funkcijas. Ja mēģinājums izsaukt metodi neizdodas, tiks izdots brīdinājums;
Funkcija print neizsauc tostring katram argumentam, bet izmanto savas iekšējās konvertēšanas;
Funkcija io.lines atgriež četru vērtību kopu vienas vietā. Lai atdarinātu veco darbību, ievietojiet izsaukumu iekavās, aizstājot to kā parametru, izsaucot citu funkciju.
Avots: linux.org.ru
