Lua 5.4

Nach zweijähriger Entwicklungszeit wurde am 29. Juni still und leise eine neue Version der Programmiersprache Lua, 5.4, veröffentlicht.

Lua ist eine einfache, interpretierte Programmiersprache, die leicht in Anwendungen eingebettet werden kann. Aufgrund dieser Eigenschaften wird Lua häufig als Sprache zur Erweiterung oder Beschreibung der Konfiguration von Programmen (insbesondere Computerspielen) verwendet. Lua wird unter der MIT-Lizenz vertrieben.

Die Vorgängerversion (5.3.5) wurde am 10. Juli 2018 veröffentlicht.

Wichtigste Änderungen in der neuen Version

  • neuer Garbage Collector basierend auf Generationen (Generation). In der Funktion „collectgarbage“ sind die Parameter „setpause“ und „setstepmul“ veraltet. Stattdessen wird der Parameter „incremental“ empfohlen.

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

  • die neue Implementierung von math.random verwendet den xoshiro256**-Algorithmus anstelle des von libc bereitgestellten und initialisiert den Generator mit einer Zufallszahl;

  • konstante Variablen;

  • „zu schließende“ Variablen sind lokale Konstanten, für die die __close-Methode ausgeführt wird, wenn der Bereich verlassen wird;

  • neue Funktion lua_resetthread – löscht den Stapel und schließt alle „geschlossenen“ Variablen;

  • neue Funktion coroutine.close – schließt die angegebene Coroutine und alle ihre „schließbaren“ Variablen;

  • Benutzerdaten (Benutzerdaten) können eine Reihe von Werten enthalten, auf die über den Index zugegriffen wird. Für die Arbeit mit ihnen wurden neue Funktionen eingeführt: lua_newuserdatauv, lua_setiuservalue und lua_getiuservalue;

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

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

  • Der Funktion string.gmatch wurde ein optionales Argument hinzugefügt, das den Offset vom Anfang der Zeichenfolge angibt, um nach Übereinstimmungen zu suchen.

  • Die Funktionen der impliziten Konvertierung von Strings in Zahlen wurden in die String-Bibliothek verschoben, ihr Verhalten hat sich geändert. Beispielsweise ist das Ergebnis der Operation „1“ + „2“ ​​jetzt eine Ganzzahl und keine Gleitkommazahl;

  • In der Speicherzuweisungsfunktion kann ein Fehler auftreten, wenn ein Speicherblock reduziert wird.

  • neues Formatzeichen in der Funktion string.format – %p (für Zeiger);

  • Die UTF8-Bibliothek akzeptiert Zeichencodes bis zu 2³¹ (wenn ein spezielles Flag angegeben ist, sind ohne dieses nur Codes bis zu 0x10FFFF zulässig und Ersatzzeichen sind nicht zulässig);

  • Ganzzahlkonstanten, die außerhalb des Wertebereichs liegen, werden in Gleitkommazahlen umgewandelt (zuvor kam es zu Bit-Clipping);

  • Die __lt-Metamethode wird nicht mehr zur Emulation der __le-Metamethode verwendet. Bei Bedarf muss die __le-Metamethode explizit festgelegt werden.

  • ein Label für eine goto-Anweisung kann nicht erstellt werden, wenn im aktuellen Bereich bereits ein Label mit demselben Namen vorhanden ist (auch wenn es im äußeren Bereich definiert wurde);

  • Die __gc-Metamethode kann mehr als nur eine Funktion sein. Wenn der Versuch, die Methode aufzurufen, fehlschlägt, wird eine Warnung angezeigt;

  • Die Druckfunktion ruft nicht für jedes Argument tostring auf, sondern verwendet ihre eigenen internen Transformationen.

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

Source: linux.org.ru

Kommentar hinzufügen