URL: https://linuxfr.org/users/jseb/journaux/lua-il-est-n%C3%A9-le-divin-52 Title: Lua: il est né le divin 5.2 ! Authors: jseb Date: 2011年12月17日T15:31:56+01:00 License: CC By-SA Tags: lua Score: 18 ![le logo Lua](http://www.lua.org/manual/5.2/logo.gif) ##Lua 5.2: les nouveautés et changements Nous l'attendions tous depuis fort longtemps, et au terme de longues discussions sur la mailing-liste Lua, voici la version 5.2. Cette version fait suite à la version 5.1, sortie en 2008. Dit comme cela, cela ne fait pas vraiment version majeure. Et pourtant, les nouveautés sont nombreuses, comme dans tout logiciel qui ne fait pas la course au numéro de version. Je vais résumer ci-après ce qui m'a paru le plus pertinent et/ou important dans les changements. Vous trouverez l'intégralité des changements (attention, c'est un peu sec) dans le [nouveau manuel de référence](http://www.lua.org/manual/5.2/manual.html#8) ####changements dans le langage * les _environnements_ (les tables qui contiennent les variables globales) ne sont plus disponibles que dans les fonctions Lua. Pour ce qui est de l'accès depuis le C, il semble qu'il faille passer par une closure (à vérifier, je n'ai pas eu le temps d'expérimenter). * Le GC n'est plus relancé automatiquement après une collecte, si il était arrêté auparavant. * plus de nommage des _identifiers_ (variables, fonctions...) avec des caractères dépendants d'une locale. ####changements dans la lib standard * La fonction _module_ est dépréciée au profit de l'utilisation de _require_. (dans la ref 5.1, il y avait deux façons de charger un module: _require_ et _module_. Dans la ref 5.2, _module_ a disparu). * Changements de noms de fonctions: _math.log10_ devient _math.log_, avec 10 en argument. _loadstring_ est regroupé dans _load_ et disparait * Quelques disparitions: _setfenv_ et _getfenv_ disparaissent, victimes collatérales des changements sur les environnements. * Et quelques déménagements: _unpack_ plie les gaules et part s'installer dans le module _table_ (il faudra donc l'appeler avec _table.unpack_). * Un peu de logique: _package.loaders_ devient le plus parlant _package.searchers_. * Plus de vérification du bytecode avec _load_ et _loadfile_. Cela peut être dangereux: ne chargez pas n'importe quoi, et en cas de doute, chargez le comme un bloc de texte (ce que Lua désigne comme un _text chunk_. ####changements dans l'api * Terminé LUA_GLOBALSINDEX (table d'indices pour récupérer des éléments sans passer par la pile Lua). À la place, il faut utiliser la registry. * Comme suite logique de la disparition des environnements, _lua_getfenv_ et _lua_setfenv_ font leurs bagages et disparaissent. * Les modules ne sont plus censés modifier des variables globales. _luaL_register_ est déprécié au profit de _luaL_setfuncs_, qui est une nouveauté de la 5.2. * Également quelques renommages et disparitions de fonctions plus mineures, que vous découvrirez avec intérêt au fur et à mesure de vos erreurs de compilation (ou en suivant le lien donné plus avant). ##La documentation Voici les prévisions pour la sortie des mises à jour des principaux ouvrages, d'après un post de Roberto Ierusalimschy sur la mailing-liste: - Reference manual (imprimée): 4~6 mois - Reference manual (en ligne) : [déja disponible ici](http://www.lua.org/manual/5.2/) - Programming in Lua: 8~10 mois. - Lua Gems: jamais (la structure du livre avec chaque chapitre provenant d'un auteur différent ne se prête pas à une mise à jour). ##Disponibilité dans les distributions * [Paquets pour RedHat, Fedora, Ubuntu](http://luabinaries.sourceforge.net/packaging.html) * Pour l'instant, rien pour Arch. La version 5.2rc7 est disponible dans AUR, mais correspond à une version de développement plus ancienne. Le paquet «officiel» ne va de toutes façons pas trainer, et sera peut-être même déja disponible au moment où vous lirez ces lignes.

AltStyle によって変換されたページ (->オリジナル) /