Sortie du langage de programmation Lua 5.4

Après cinq ans de développement est disponible libération Lua 5.4, un langage de programmation de script rapide et compact largement utilisé comme langage embarqué (par exemple, pour définir une configuration ou écrire des extensions). Le code de l'interpréteur Lua est écrit en C et distribué par sous licence MIT.

Lua combine une syntaxe procédurale simple avec de puissantes capacités de description de données grâce à l'utilisation de tableaux associatifs et de sémantique extensible du langage. Lua utilise le typage dynamique, convertissant les constructions de langage en bytecode qui s'exécute sur une machine virtuelle basée sur des registres avec un garbage collection automatique. L'interpréteur lui-même est conçu comme une bibliothèque qui peut être facilement intégrée dans des projets en langages C et C++.

principal les innovations:

  • Un nouveau mode de fonctionnement du garbage collector a été implémenté - "générationnel», qui complétait le mode de récupération de place incrémentielle précédemment disponible. Le nouveau mode implique d’exécuter une analyse raccourcie plus fréquemment, couvrant uniquement les objets récemment créés. Un parcours complet de tous les objets n'est effectué que si, après un court parcours, il n'a pas été possible d'atteindre la consommation de mémoire souhaitée. Cette approche vous permet d'obtenir des performances plus élevées et de réduire la consommation de mémoire lors du stockage d'un grand nombre d'objets qui durent peu de temps.
  • Ajout de la possibilité de définir des variables constantes définies avec l'attribut « const ». Ces variables ne peuvent être affectées qu’une seule fois et, une fois initialisées, ne peuvent pas être modifiées.
  • Ajout de la prise en charge des variables "à fermer", qui sont attribués à l'aide de l'attribut "close" et ressemblent à des variables locales constantes (avec l'attribut const), qui en diffèrent par le fait que la valeur est fermée (la méthode "__close" est appelée) chaque fois qu'elle quitte la portée, par exemple, après l'achèvement normal du bloc, transition en utilisant break/goto/return ou exit lorsqu'une erreur se produit.
  • Taper "données utilisateur», qui offre la possibilité de stocker n'importe quelle donnée C dans des variables Lua (représente un bloc de données en mémoire ou contient un pointeur C), peut désormais contenir plusieurs valeurs (avoir plusieurs métatables).
  • Une nouvelle implémentation de la fonction de génération de nombres pseudo-aléatoires est présentée - math.random.
  • Ajout d'un système d'avertissements déterminés à l'aide de l'expression prévenir et, contrairement aux erreurs, n'affectent pas l'exécution ultérieure du programme.
  • Ajout d'informations de débogage sur les arguments de fonction et les valeurs de retour.
  • Une nouvelle sémantique a été proposée pour énumérer des entiers dans des boucles "en". Le nombre d'itérations est calculé avant le démarrage de la boucle, ce qui évite les débordements de variables et les bouclages. Si la valeur initiale est supérieure à la valeur limite, une erreur s'affiche.
  • En fonction 'chaîne.gmatch' a ajouté un nouvel argument facultatif 'init', qui détermine à quelle position démarrer la recherche (par défaut, à partir de 1 caractère).
  • Nouvelles fonctionnalités ajoutées 'lua_resetthread‘ (réinitialise le thread, efface toute la pile d’appels et ferme toutes les variables « à fermer ») et ‘coroutine.close' (ferme la coroutine et toutes les variables « à fermer » associées).
  • Les fonctions de conversion de chaînes en nombres ont été déplacées vers la bibliothèque "string".
  • Les appels à la fonction d'allocation de mémoire peuvent désormais échouer si la taille du bloc mémoire est réduite.
  • En fonction 'chaîne.format' ajout de la prise en charge du nouveau spécificateur de format '%p' (pointeur renvoyé par lua_topointer).
  • La bibliothèque utf8 fournit un support codes de caractères avec des nombres jusqu'à 2 ^ 31.

Source: opennet.ru

Ajouter un commentaire