Lua 5.4

Efter to års udvikling blev den nye version af programmeringssproget Lua — 5.4 — stille og roligt udgivet den 29. juni.

Lua er et simpelt fortolket programmeringssprog, der nemt kan integreres i applikationer. Takket være disse egenskaber er Lua bredt anvendt som et udvidelsessprog eller konfigurationsbeskrivelses-sprog for programmer (især computerspil). Lua distribueres under MIT-licensen.

Den forrige version (5.3.5) blev udgivet den 10. juli 2018.

Vigtige ændringer i den nye version

  • en ny generationsbaseret affaldssamler (generational). I funktionen collectgarbage er parametrene setpause og setstepmul blevet forældede, i stedet anbefales det at bruge parameteren incremental;

  • en ny funktion til at give advarsler warn med mulighed for at deaktivere deres visning;

  • den nye implementation af math.random bruger algoritmen xoshiro256** i stedet for den der leveres af libc og initialiserer generatoren med et tilfældigt tal;

  • konstanter (constant variables);

  • «lukket» (to-be-closed) variabler — lokale konstanter, som kalder metoden __close ved udfald af synlighed;

  • den nye funktion lua_resetthread — renser stakken og udfører lukning af alle «lukket» variabler;

  • den nye funktion coroutine.close — lukker den angivne coroutine og alle dens «lukket» variabler;

  • brugerdefinerede data (userdata) kan indeholde et sæt værdier med indeksadgang. Der er introduceret nye funktioner til at arbejde med dem: lua_newuserdatauv, lua_setiuservalue og lua_getiuservalue;

  • debug-oplysninger om parametre og returværdier for funktioner er tilgængelige;

  • hvis der bruges et heltal indeks i en for-løkke, og der opstår overløb — afsluttes løkken;

  • funktionen string.gmatch har fået et valgfrit argument, der angiver et offset fra begyndelsen af strengen for at finde matches;

  • funktionerne til implicit konvertering af strenge til tal er blevet flyttet til string-biblioteket, deres adfærd er ændret. For eksempel er resultatet af operationen "1" + "2" nu et heltal, og ikke et flydende tal;

  • i hukommelsesallokeringsfunktionen kan der opstå en fejl under nedskæring af hukommelsesblokken;

  • et nyt format-symbol i funktionen string.format — %p (til pointere);

  • utf8-biblioteket accepterer tegnkoder op til 2³¹ (ved angivelse af et specielt flag, uden dette tillades kun koder op til 0x10FFFF og surrogate koder er ikke tilladt);

  • Heltalskonstanter, der ligger uden for værdiernes interval, konverteres til flydende tal (tidligere skete bitklip);

  • Metametoden __lt bruges ikke længere til at efterligne metametoden __le; hvis det er nødvendigt, skal metametoden __le angives eksplicit;

  • En etiket til goto-oprationen kan ikke oprettes, hvis der allerede findes en etiket med det samme navn i det nuværende scopes (selv hvis den blev defineret i et eksternt scope);

  • Metametoden __gc kan ikke kun være en funktion. Hvis det mislykkes at kalde metoden, vises en advarsel;

  • Print-funktionen kalder ikke tostring for hvert argument, men bruger sine interne transformationer;

  • Io.lines-funktionen returnerer et sæt på fire værdier i stedet for en; for at efterligne den gamle adfærd skal du omgive opkaldet med parenteser, hvis du indsætter det som parameter ved opkald af en anden funktion.

Kilde: linux.org.ru

Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere 🔥 Køb pålidelig webhosting med DDoS-beskyttelse, VPS VDS-servere | ProHoster