Lua 5.4

Na twee jaar ontwikkeling werd op 29 juni stilletjes een nieuwe versie van de programmeertaal Lua, 5.4, uitgebracht.

Lua is een eenvoudige, geïnterpreteerde programmeertaal die eenvoudig in applicaties kan worden geïntegreerd. Vanwege deze eigenschappen wordt Lua veel gebruikt als taal voor het uitbreiden of beschrijven van de configuratie van programma's (in het bijzonder computerspellen). Lua wordt gedistribueerd onder de MIT-licentie.

De vorige versie (5.3.5) is uitgebracht op 10 juli 2018.

Belangrijkste wijzigingen in de nieuwe versie

  • nieuwe generatie vuilnisman. In de collectgarbage-functie zijn de parameters setpause en setstepmul verouderd en wordt in plaats daarvan de incrementele parameter aanbevolen;

  • een nieuwe functie voor het geven van waarschuwingswaarschuwingen met de mogelijkheid om de weergave ervan uit te schakelen;

  • de nieuwe implementatie van math.random gebruikt het xoshiro256**-algoritme in plaats van de meegeleverde libc en initialiseert de generator met een willekeurig getal;

  • constante variabelen;

  • “to-be-closed”-variabelen zijn lokale constanten waarvoor de __close-methode wordt uitgevoerd bij het verlaten van het bereik;

  • nieuwe functie lua_resethread - wist de stapel en sluit alle "gesloten" variabelen;

  • nieuwe functie coroutine.close - sluit de opgegeven coroutine en al zijn "gesloten" variabelen;

  • gebruikersgegevens kunnen een reeks waarden bevatten waartoe de index toegang heeft. Er zijn nieuwe functies geïntroduceerd om ermee te werken: lua_newuserdatauv, lua_setiuservalue en lua_getiuservalue;

  • Er is foutopsporingsinformatie over parameters en retourwaarden van functies beschikbaar;

  • als een gehele index wordt gebruikt in een for-lus en er treedt een overflow op, eindigt de lus;

  • er is een optioneel argument toegevoegd aan de string.gmatch-functie, die de offset vanaf het begin van de string specificeert om naar overeenkomsten te zoeken;

  • functies voor het impliciet converteren van tekenreeksen naar getallen zijn verplaatst naar de tekenreeksbibliotheek en hun gedrag is veranderd. Het resultaat van de bewerking "1" + "2" is nu bijvoorbeeld een geheel getal in plaats van een getal met drijvende komma;

  • in de geheugentoewijzingsfunctie kan een fout optreden bij het verkleinen van een geheugenblok;

  • nieuw opmaakteken in de string.format-functie - %p (voor pointers);

  • de utf8-bibliotheek accepteert tekencodes tot 2³¹ (als er een speciale vlag is gespecificeerd, zijn zonder deze alleen codes tot 0x10FFFF toegestaan ​​en surrogaten niet toegestaan);

  • geheeltallige constanten buiten het bereik van waarden worden geconverteerd naar zwevende getallen (voorheen vond bit-clipping plaats);

  • de __lt metamethode wordt niet langer gebruikt om de __le metamethode te emuleren; indien nodig moet de __le metamethode expliciet worden gespecificeerd;

  • er kan geen label voor een goto-instructie worden gemaakt als er al een label met dezelfde naam bestaat in het huidige bereik (zelfs als dit is gedefinieerd in het buitenste bereik);

  • De __gc-metamethode kan meer zijn dan alleen een functie. Als een poging om een ​​methode aan te roepen mislukt, wordt er een waarschuwing afgedrukt;

  • de printfunctie roept niet voor elk argument tostring aan, maar gebruikt zijn eigen interne conversies;

  • de functie io.lines retourneert een set van vier waarden in plaats van één; om het oude gedrag te emuleren, plaatst u de aanroep tussen haakjes als u deze als parameter doorgeeft aan een andere functieaanroep.

Bron: linux.org.ru

Voeg een reactie