Lua 5.4

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

Lua is een eenvoudige, geïnterpreteerde programmeertaal die gemakkelijk kan worden ingebouwd in applicaties. Dankzij deze eigenschappen wordt Lua breed gebruikt als een uitbreidings- of configuratietaal voor programma's (in het bijzonder computer spellen). Lua wordt verspreid onder de MIT-licentie.

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

Belangrijke wijzigingen in de nieuwe versie

  • een nieuwe generational garbage collector. In de functie collectgarbage zijn de parameters setpause en setstepmul verouderd; in plaats daarvan wordt aanbevolen om de parameter incremental te gebruiken;

  • een nieuwe functie voor waarschuwingen warn met de mogelijkheid om de weergave ervan uit te schakelen;

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

  • constanten (constant variables);

  • sluitbare variabelen (to-be-closed) — lokale constanten waarvoor de methode __close wordt uitgevoerd bij het verlaten van de scope;

  • een nieuwe functie lua_resetthread — reinigt de stack en sluit alle 'sluitbare' variabelen;

  • een nieuwe functie coroutine.close — sluit de opgegeven coroutine en al haar 'sluitbare' variabelen;

  • gebruikersgegevens (userdata) kunnen een set waarden bevatten die toegankelijk zijn per index. Voor het werken ermee zijn nieuwe functies geïntroduceerd: lua_newuserdatauv, lua_setiuservalue en lua_getiuservalue;

  • er is foutopsporingsinformatie beschikbaar over de parameters en geretourneerde waarden van functies;

  • als er in een for-lus met een tellende variabele een gehele index wordt gebruikt en er een overflow optreedt — wordt de lus beëindigd;

  • in de functie string.gmatch is een optionele parameter toegevoegd die een offset vanaf het begin van de string specificeert voor het zoeken naar overeenkomsten;

  • functies voor impliciete conversie van strings naar getallen zijn verplaatst naar de stringbibliotheek en hun gedrag is veranderd. Bijvoorbeeld, het resultaat van de operatie "1" + "2" is nu een geheel getal in plaats van een drijvend getal;

  • in de functie voor geheugenallocatie kan een fout optreden bij het verkleinen van een blok geheugen;

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

  • de utf8-bibliotheek accepteert teken codes tot 2³¹ (bij specificatie van een speciale vlag, zonder die vlag worden alleen codes tot 0x10FFFF toegestaan en zijn surrogate pairs niet toegestaan);

  • Gehele getallen die buiten het bereik van waarden vallen, worden omgezet naar drijvende-komma getallen (voorheen vond er bittruncatie plaats);

  • De metaprocedure __lt wordt niet langer gebruikt voor het emuleren van de metaprocedure __le; indien nodig moet de metaprocedure __le expliciet worden gedefinieerd;

  • Een label voor de goto-instructie kan niet worden gemaakt als er al een label met dezelfde naam in de huidige scope bestaat (zelfs als het in een externe scope is gedefinieerd);

  • De metaprocedure __gc kan niet alleen een functie zijn. Als het aanroepen van de methode mislukt, verschijnt er een waarschuwing;

  • De functie print roept tostring niet aan voor elk argument, maar gebruikt zijn 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 bij een andere functie aanroept.

Bron: linux.org.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster