AprÚs cinq ans de développement libération , 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 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++.
:
- Un nouveau mode de fonctionnement du garbage collector a Ă©tĂ© implĂ©mentĂ© - "», 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 "", 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 "», 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 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 "". 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 '' 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 'â (rĂ©initialise le thread, efface toute la pile dâappels et ferme toutes les variables « Ă fermer ») et â' (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 '' 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 avec des nombres jusqu'Ă 2 ^ 31.
Source: opennet.ru
