Lua 5.4

Nach zwei Jahren Entwicklung wurde am 29. Juni still und heimlich die neue Version der Programmiersprache Lua – 5.4 – veröffentlicht.

Lua ist eine einfache, interpretierte Programmiersprache, die sich leicht in Anwendungen einbetten lässt. Aufgrund dieser Eigenschaften wird Lua häufig als Erweiterungssprache oder zur Beschreibung der Konfiguration von Programmen (insbesondere von Computerspielen) verwendet. Lua wird unter der MIT-Lizenz verbreitet.

Die vorherige Version (5.3.5) wurde am 10. Juli 2018 veröffentlicht.

Die wichtigsten Änderungen in der neuen Version

  • ein neuer generationaler Garbage Collector. In der Funktion collectgarbage wurden die Parameter setpause und setstepmul als veraltet erklärt, stattdessen wird empfohlen, den Parameter incremental zu verwenden.

  • eine neue Funktion zur Ausgabe von Warnungen warn mit der Möglichkeit, deren Anzeige zu deaktivieren;

  • die neue Implementierung von math.random verwendet den Algorithmus xoshiro256** anstelle des in libc bereitgestellten und initialisiert den Generator mit einer zufälligen Zahl;

  • konstante Variablen;

  • »zu schließende« (to-be-closed) Variablen – lokale Konstanten, für die die Methode __close beim Verlassen des Geltungsbereichs ausgeführt wird;

  • eine neue Funktion lua_resetthread – reinigt den Stack und schließt alle „zu schließenden“ Variablen.

  • Die neue Funktion coroutine.close schließt die angegebene Koroutine und alle ihre "schließbaren" Variablen.

  • Benutzerdaten (userdata) können eine Menge von Werten mit Zugriffsindex enthalten. Für die Arbeit damit wurden neue Funktionen eingeführt: lua_newuserdatauv, lua_setiuservalue und lua_getiuservalue.

  • Debugging-Informationen zu den Parametern und Rückgabewerten von Funktionen sind verfügbar.

  • Wenn in einer for-Schleife ein ganzzahliger Index verwendet wird und ein Überlauf auftritt, wird die Schleife beendet.

  • Der Funktion string.gmatch wurde ein optionales Argument hinzugefügt, das den Offset vom Beginn der Zeichenkette für die Suchübereinstimmungen angibt.

  • Die Funktionen für die implizite Umwandlung von Strings in Zahlen wurden in die String-Bibliothek verschoben, ihr Verhalten hat sich geändert. Zum Beispiel ist das Ergebnis der Operation "1" + "2" jetzt eine ganze Zahl und nicht mehr eine Fließkommazahl.

  • In der Funktion zur Speicherzuweisung kann ein Fehler beim Verkleinern eines Speicherblocks auftreten.

  • Ein neues Formatierungssymbol in der Funktion string.format ist %p (für Zeiger).

  • Die utf8-Bibliothek akzeptiert Zeichencodes bis zu 2³¹ (bei Angabe eines speziellen Flags; ohne dieses sind nur Codes bis 0x10FFFF zulässig und es sind keine Surrogatsymbole erlaubt).

  • Ganzzahlige Konstanten, die außerhalb des Wertebereichs liegen, werden in Fließkommazahlen umgewandelt (zuvor fand eine bitweise Kürzung statt);

  • Die Metamethode __lt wird nicht mehr verwendet, um die Metamethode __le zu emulieren; bei Bedarf muss die Metamethode __le ausdrücklich definiert werden;

  • Ein Label für den goto-Befehl kann nicht erstellt werden, wenn im aktuellen Geltungsbereich bereits ein Label mit demselben Namen existiert (selbst wenn es in einem äußeren Geltungsbereich definiert wurde);

  • Die Metamethode __gc kann nicht nur eine Funktion sein. Wenn der Aufruf der Methode fehlschlägt, wird eine Warnung ausgegeben;

  • Die Funktion print ruft tostring nicht für jedes Argument auf, sondern verwendet ihre eigenen internen Umwandlungen;

  • Die Funktion io.lines gibt ein Set aus vier Werten anstelle von einem zurück; um das alte Verhalten zu emulieren, schließen Sie den Aufruf in Klammern ein, wenn Sie ihn als Parameter beim Aufruf einer anderen Funktion verwenden.

Quelle: linux.org.ru

Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen 🔥 Zuverlässiges Webhosting mit DDoS-Schutz, VPS- und VDS-Server kaufen | ProHoster