Efter to års udvikling blev en ny version af programmeringssproget Lua, 29, stille og roligt frigivet den 5.4. juni.
Lua er et enkelt, fortolket programmeringssprog, der nemt kan integreres i applikationer. På grund af disse kvaliteter er Lua meget brugt som et sprog til at udvide eller beskrive konfigurationen af programmer (især computerspil). Lua distribueres under MIT-licensen.
Den tidligere version (5.3.5) blev udgivet den 10. juli 2018.
Vigtigste ændringer i den nye version
-
ny generation af skraldemand. I collectgarbage-funktionen er setpause- og setstepmul-parametrene blevet forældet, og den inkrementelle parameter anbefales i stedet;
-
en ny funktion til at udstede advarsler med mulighed for at deaktivere deres visning;
-
den nye implementering af math.random bruger xoshiro256**-algoritmen i stedet for den medfølgende libc og initialiserer generatoren med et tilfældigt tal;
-
konstante variable;
-
"to-be-closed"-variabler er lokale konstanter, for hvilke __close-metoden udføres, når man forlader scopet;
-
ny funktion lua_resettthread - rydder stakken og lukker alle "lukkede" variabler;
-
ny funktion coroutine.close - lukker den specificerede coroutine og alle dens "lukkede" variabler;
-
brugerdata kan indeholde et sæt værdier, der er tilgået af indeks. Nye funktioner er blevet introduceret for at arbejde med dem: lua_newuserdatauv, lua_setiuservalue og lua_getiuservalue;
-
Fejlfindingsoplysninger om parametre og returværdier for funktioner er tilgængelig;
-
hvis et heltalsindeks bruges i en for-løkke, og der opstår et overløb, slutter løkken;
-
et valgfrit argument er blevet tilføjet til string.gmatch-funktionen, der angiver forskydningen fra begyndelsen af strengen for at søge efter matches;
-
funktioner til implicit konvertering af strenge til tal er blevet flyttet til strengbiblioteket, og deres adfærd er ændret. For eksempel er resultatet af operationen "1" + "2" nu et heltal i stedet for et flydende deal;
-
i hukommelsesallokeringsfunktionen kan der opstå en fejl ved reduktion af en hukommelsesblok;
-
nyt formateringstegn i string.format-funktionen - %p (til pointere);
-
utf8-biblioteket accepterer tegnkoder op til 2³¹ (hvis et særligt flag er angivet, uden det er kun koder op til 0x10FFFF tilladt, og surrogater er ikke tilladt);
-
heltalskonstanter uden for værdiområdet konverteres til flydende tal (tidligere forekom bitklipning);
-
__lt-metametoden bruges ikke længere til at efterligne __le-metametoden; om nødvendigt skal __le-metametoden specificeres eksplicit;
-
en etiket til en goto-sætning kan ikke oprettes, hvis en etiket med samme navn allerede findes i det aktuelle omfang (selvom det var defineret i det ydre omfang);
-
__gc-metametoden kan være mere end blot en funktion. Hvis et forsøg på at kalde en metode mislykkes, vil en advarsel blive udskrevet;
-
printfunktionen kalder ikke tostring for hvert argument, men bruger sine egne interne konverteringer;
-
io.lines-funktionen returnerer et sæt på fire værdier i stedet for én; for at efterligne den gamle adfærd skal du omslutte kaldet i parentes, hvis du sender det som en parameter til et andet funktionskald.
Kilde: linux.org.ru