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

Lua ist eine einfache interpretiert Sprache, die leicht in Anwendungen integriert werden kann. Aufgrund dieser Eigenschaften wird Lua hĂ€ufig als Erweiterungs- oder Konfigurationssprache fĂŒr Programme (insbesondere Computer Spiele) verwendet. Die Verbreitung von Lua erfolgt unter der MIT-Lizenz.

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

Wesentliche Änderungen in der neuen Version

  • ein neuer generationenbasierter Garbage Collector. In der Funktion collectgarbage sind die Parameter setpause und setstepmul als veraltet markiert; 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 von libc und initialisiert den Generator mit einer Zufallszahl;

  • Konstanten (constant variables);

  • „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 – rĂ€umt den Stack auf und schließt alle „zu schließenden“ Variablen;

  • eine neue Funktion coroutine.close – schließt die angegebene Koroutine und alle ihre „zu schließenden“ Variablen;

  • Benutzerdefinierte Daten (userdata) können eine Menge von Werten mit indeksiertem Zugriff enthalten. DafĂŒr 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 Anfang der Zeichenkette fĂŒr die Suche nach Ü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 Ganzzahl und nicht mehr eine Fließkommazahl;

  • in der GedĂ€chtniszuteilungsfunktion kann ein Fehler auftreten, wenn der Speicherblock verkleinert wird;

  • neues Formatierungszeichen in der Funktion string.format – %p (fĂŒr Zeiger);

  • die Bibliothek utf8 akzeptiert Zeichencodes bis zu 2ÂłÂč (bei Angabe eines speziellen Flags, ohne dieses sind nur Codes bis 0x10FFFF zulĂ€ssig, und Surrogate sind nicht erlaubt);

  • Ganzzahlige Konstanten, die außerhalb des Wertebereichs liegen, werden in Fließkommazahlen umgewandelt (frĂŒher fand eine bitweise Abschneidung statt);

  • Das Metamethode __lt wird nicht mehr verwendet, um die Metamethode __le zu emulieren; wenn erforderlich, muss die Metamethode __le explizit angegeben werden;

  • Ein Label fĂŒr den goto-Befehl kann nicht erstellt werden, wenn im aktuellen GĂŒltigkeitsbereich bereits ein Label mit demselben Namen existiert (auch wenn es im Ă€ußeren Bereich 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 internen Umwandlungen;

  • Die Funktion io.lines gibt ein Set von vier Werten anstelle eines einzelnen Wertes zurĂŒck. Um das alte Verhalten zu emulieren, setzen Sie den Aufruf in Klammern, wenn Sie ihn als Parameter beim Aufruf einer anderen Funktion verwenden.

Quelle: linux.org.ru

ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server đŸ”„ ZuverlĂ€ssiges Hosting fĂŒr Websites mit DDoS-Schutz kaufen, VPS VDS Server - ProHoster