Efter tvĂ„ Ă„rs utveckling slĂ€pptes den nya versionen av programmeringssprĂ„ket Lua â 5.4, tyst och obemĂ€rkt den 29 juni.
Lua Àr ett enkelt, tolkat programmeringssprÄk som Àr lÀtt att integrera i applikationer. Tack vare dessa egenskaper anvÀnds Lua i stor utstrÀckning som ett expansionssprÄk eller för att beskriva programkonfigurationer (sÀrskilt inom datorspel). Lua distribueras under MIT-licensen.
Den föregÄende versionen (5.3.5) slÀpptes den 10 juli 2018.
Huvudsakliga förÀndringar i den nya versionen
en ny generationsbaserad skrÀparbetare (generational garbage collector). I funktionen collectgarbage har parametrarna setpause och setstepmul förklarats som obsoleta, istÀllet rekommenderas det att anvÀnda parametern incremental;
en ny funktion för att generera varningar warn med möjlighet att stÀnga av visningen av dem;
den nya implementeringen av math.random anvÀnder algoritmen xoshiro256** istÀllet för den som tillhandahÄlls av libc och initierar generatorn med ett slumpmÀssigt tal;
konstanter (constant variables);
»stĂ€ngbara« (to-be-closed) variabler â lokala konstanter som har metoden __close utförd vid utgĂ„ng frĂ„n synlighetsomrĂ„det;
en ny funktion lua_resetthread â som rensar stacken och stĂ€nger alla «stĂ€ngbara» variabler;
en ny funktion coroutine.close â som stĂ€nger den angivna koroutinen och alla dess «stĂ€ngbara» variabler;
anvÀndardata (userdata) kan innehÄlla en uppsÀttning vÀrden med indexÄtkomst. Nya funktioner har införts för att arbeta med dem: lua_newuserdatauv, lua_setiuservalue och lua_getiuservalue;
debugginformation om parametrar och returvÀrden för funktioner Àr nu tillgÀnglig;
om en heltalsindex anvÀnds i for-loopar och det sker ett överflöde, avbryts loopen;
en valfri parameter för att sÀtta ett forskningsförskott frÄn början av strÀngen har lagts till i funktionen string.gmatch;
funktioner för implicit konvertering av strÀngar till nummer har flyttats till strÀngbiblioteket, deras beteende har förÀndrats. Till exempel Àr resultatet av operationen "1" + "2" nu ett heltal och inte ett flyttal;
i minnesallokeringsfunktionen kan ett fel uppstÄ vid nedskÀrning av minnesblocket;
en ny formatteringssymbol i funktionen string.format â %p (för pekare);
utf8-biblioteket accepterar teckenkoder upp till 2ÂłÂč (med en speciell flagga, utan den tillĂ„ts endast koder upp till 0x10FFFF och surrogater Ă€r inte tillĂ„tna);
Heltal konstanta vÀrden som överskrider vÀrdeintervallet konverteras till flyttal (tidigare skedde bitavskÀrning);
Metametoden __lt anvÀnds inte lÀngre för att emulera metametoden __le, om nödvÀndigt mÄste metametoden __le anges uttryckligen;
En etikett för goto-satsen kan inte skapas om det redan finns en etikett med samma namn i det aktuella omfÄnget (Àven om den definierades i ett yttre omfÄng);
Metametoden __gc kan vara mer Àn bara en funktion. Om ett metodanrop misslyckas kommer en varning att skrivas ut;
Print-funktionen anropar inte tostring för varje argument, utan anvÀnder sina interna konverteringar;
io.lines-funktionen returnerar en uppsÀttning fyra vÀrden istÀllet för ett, för att emulera det gamla beteendet, omge anropet med parenteser om du anvÀnder det som parameter vid anrop av en annan funktion.
KĂ€lla: linux.org.ru
