Die Programmiersprache Lua 5.5 ist verfügbar.

Nach fünf Jahren Entwicklung ist das Release von Lua 5.5 verfügbar, einer schnellen und kompakten Skriptsprache, die weit verbreitet ist als eingebettete Sprache zur Konfiguration und zur Erstellung von Erweiterungen. Der Lua-Interpreter ist in der Programmiersprache C geschrieben und wird unter der MIT-Lizenz veröffentlicht.

Lua kombiniert eine einfache prozedurale Syntax mit der Möglichkeit, Daten über assoziative Arrays und eine erweiterbare Semantik des Sprachkonzepts zu beschreiben. Lua nutzt dynamische Typisierung, und die Sprachkonstrukte werden in Bytecode umgewandelt, der auf einer registerbasierten virtuellen Maschine mit automatischer Speicherbereinigung ausgeführt wird. Der Interpreter wird als Bibliothek bereitgestellt, die in Projekte in den Sprachen C und C++ integriert werden kann.

Hauptneuheiten:

  • Für den Großteil der Garbage-Collection-Operationen wird ein inkrementeller Modus verwendet, bei dem der Garbage-Collection-Zyklus in einzelne Schritte unterteilt wird, die mit der Ausführung des Programms wechseln. Dies ermöglicht es, lange Aussetzungszeiten der Anwendungen mit einer großen Anzahl von Objekten im Speicher zu vermeiden.
  • Es wird eine kompakte Implementierung von Arrays angeboten, die 60% weniger Speicher für Arrays mit homogenen Daten benötigt (der Speicher wird eingespart, weil die Typinformationen nicht für jedes Element, sondern für eine Gruppe von Elementen gespeichert werden).
  • Die Möglichkeit, globale Variablen in beliebigen Code-Blöcken mit dem Schlüsselwort „global“ explizit zu deklarieren, wurde hinzugefügt. Wenn im Code-Block Ausdrücke mit dem Schlüsselwort „global“ angegeben werden, müssen alle Variablen unbedingt explizit deklariert werden. Fehlt die Deklaration „global“, wird implizit der Ausdruck „global *“ gesetzt, bei dem das alte Verhalten erhalten bleibt und alle Variablen als global interpretiert werden. Zudem wurde der Ausdruck „global<const> *“ hinzugefügt, bei dem alle implizit definierten globalen Variablen im Nur-Lese-Modus verfügbar werden. X = 1 — Ok, X ist eine globale Variable, das alte Verhalten ist standardmäßig aktiv. do global Y — Deklaration der Variable Y als global; alle anderen Variablen im Block müssen explizit deklariert werden. Y = 1 — Ok, die Variable Y wurde zuvor definiert. X = 1 — Fehler, die Variable X ist nicht definiert. end X = 2 — Ok, außerhalb des globalen Blocks gilt das alte Verhalten.
  • Die in den "for"-Schleifen angegebenen Steuerungsvariablen sind nun schreibgeschützt und können im Schleifenrumpf nicht verändert werden. Zum Beispiel kann die Variable i, die in der Schleife "for i = 1, 5 do" deklariert wird, im Rumpf der Schleife nicht geändert werden.
  • Bei der Ausgabe von Fließkommazahlen über die Funktion print wird nun eine ausreichende Anzahl von Ziffern ausgegeben, um eine korrekte Umwandlung von der Zeichenkette in die ursprüngliche Darstellung zu ermöglichen.
  • Die zulässige Anzahl von Verschachtelungsebenen für Tabellenkonstruktoren wurde erhöht.
  • Es wurde die Funktion table.create(nseq, nrec) hinzugefügt, um leere Tabellen zu erstellen und den Speicher für die angegebene Anzahl von Elementen im Voraus zu reservieren.
  • In der Funktion utf8.offset wird nun nicht nur der Byte-Versatz zum Beginn des Zeichens zurückgegeben, sondern auch die Position des Endes des Zeichens.
  • Die Unterstützung zur Erstellung von externen Strings, die im von Lua nicht verwalteten Speicher platziert werden, wurde hinzugefügt.
  • Die Funktion luaL_openselectedlibs wurde zur Auswahl bestimmter Bibliotheken hinzugefügt, sowie die Funktion luaL_makeseed, die einen Seed für die Funktion lua_newstate generiert.
  • In lua.c wird die dynamische Ladefunktion für die Bibliothek 'readline' bereitgestellt, falls diese auf dem System vorhanden ist — wenn die Bibliothek vorhanden ist, wird sie geladen und die Funktionen zur Bearbeitung von Zeichenfolgen stehen zur Verfügung.
  • Die Optimierung zur Einsparung von Arbeitsspeicher beim Laden von vorcompilierter Bytecode wurde aktiviert — Lua kann jetzt den Speicher in einigen internen Strukturen wiederverwenden, ohne Duplikate beim Laden von doppeltem Bytecode zu erstellen.
  • Das Wiederverwenden aller Zeichenfolgen in den Operationen 'dump' und 'undump' wurde sichergestellt.
  • In den Hilfs-Puffern wird das Wiederverwenden von Puffern (ohne Kopieren in einen neuen Puffer) beim Erstellen der endgültigen Zeichenfolge gewährleistet.

Quelle: opennet.ru

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