Lua 5.4

Efter två års utveckling, den 29 juni, släpptes en ny version av programmeringsspråket Lua, 5.4, tyst och omärkligt.

Lua är ett enkelt, tolkat programmeringsspråk som enkelt kan bäddas in i applikationer. På grund av dessa egenskaper används Lua i stor utsträckning som ett språk för att utöka eller beskriva konfigurationen av program (i synnerhet datorspel). Lua kommer att distribueras under MIT-licensen.

Den tidigare versionen (5.3.5) släpptes den 10 juli 2018.

Huvudändringar i den nya versionen

  • ny sophämtare baserad på generationer (generations). I collectgarbage-funktionen har parametrarna setpause och setstepmul föråldrats och den inkrementella parametern rekommenderas istället;

  • en ny funktion för att utfärda varningsvarningar med möjligheten att inaktivera deras visning;

  • den nya implementeringen av math.random använder xoshiro256**-algoritmen istället för den som tillhandahålls av libc och initierar generatorn med ett slumptal;

  • konstanta variabler;

  • "to-be-closed"-variabler är lokala konstanter för vilka __close-metoden exekveras när scopet avslutas;

  • ny funktion lua_resettthread - rensar stacken och stänger alla "stängda" variabler;

  • ny funktion coroutine.close - stänger den specificerade koroutinen och alla dess "stängbara" variabler;

  • användardata (användardata) kan innehålla en uppsättning värden som nås av index. Nya funktioner har introducerats för att fungera med dem: lua_newuserdatauv, lua_setiuservalue och lua_getiuservalue;

  • felsökningsinformation om parametrar och returvärden för funktioner är tillgänglig;

  • om ett heltalsindex används i for-slingan och ett spill inträffar, slutar slingan;

  • lade till ett valfritt argument till funktionen string.gmatch som anger offset från början av strängen för att söka efter matchningar;

  • funktionerna för implicit konvertering av strängar till tal har flyttats till strängbiblioteket, deras beteende har förändrats. Till exempel är resultatet av operationen "1" + "2" nu ett heltal, inte ett flyttal;

  • i minnesallokeringsfunktionen kan ett fel uppstå när ett minnesblock reduceras;

  • nytt formattecken i funktionen string.format - %p (för pekare);

  • utf8-biblioteket accepterar teckenkoder upp till 2³¹ (när en speciell flagga anges, utan den är endast koder upp till 0x10FFFF tillåtna och surrogat är inte tillåtna);

  • heltalskonstanter som ligger utanför värdeintervallet konverteras till flytande tal (tidigare bitklippning inträffade);

  • __lt-metametoden används inte längre för att emulera __le-metametoden, om nödvändigt måste __le-metametoden ställas in explicit;

  • en etikett för en goto-sats kan inte skapas om en etikett med samma namn redan finns i det aktuella omfånget (även om det definierades i det yttre omfånget);

  • __gc-metametoden kan vara mer än bara en funktion. Om försöket att anropa metoden misslyckas, kommer en varning att visas;

  • utskriftsfunktionen anropar inte tostring för varje argument, utan använder sina egna interna transformationer;

  • io.lines-funktionen returnerar en uppsättning av fyra värden istället för ett, för att efterlikna det gamla beteendet, omslut anropet inom parentes om du ersätter det som en parameter när du anropar en annan funktion.

Källa: linux.org.ru

Lägg en kommentar