LuaSocket, Lua 5.2 et Redis

Est-ce que quelqu’un a réussi à faire en sorte que ceux-ci travaillent ensemble? La version 5.2 fonctionne très bien et il peut trouver luaredis (redis.lua), mais il ne parvient pas à charger le module de socket, qui ne semble pas fonctionner avec lua (LuaSocket version 2.0.2). Quelqu’un at-il des conseils pour que cela fonctionne?

J’ai essayé de faire luasocket, mais cela échoue complètement, ce qui, je suppose, est dû à ma version 5.2 de Lua.

La réponse est-elle simplement de revenir à Lua 5.1, ou existe-t-il un autre correctif dont je ne suis pas au courant?

La version actuelle de LuaSocket, comme beaucoup de bibliothèques Lua, ne supporte pas Lua 5.2. Pour Lua, les modifications dans le deuxième chiffre de la version indiquent des versions majeures et la compatibilité en amont n’est pas conservée (sauf dans certains cas, via des indicateurs de compilation pour réactiver des fonctionnalités obsolètes).

Lua 5.1 est stable et il n’y a pas de raison particulière de ne pas l’utiliser sauf si vous avez besoin d’une fonctionnalité ajoutée à la 5.2.

Cela dit, de nombreuses bibliothèques sont actuellement mises à jour pour être compatibles avec la version 5.2, notamment LuaSocket. Si vous êtes déterminé et disposé à comstackr à partir des sources et des fichiers de modification, essayez ce référentiel, qui est une version 5.2 compatible de LuaSocket.

Notez que Lua 5.2 doit avoir été construit avec LUA_COMPAT_MODULE défini pour cette version de LuaSocket pour pouvoir être compilé avec celle-ci. Vous aurez également besoin de modifier les fichiers Make pour ajuster les chemins corrects sur votre système.

Dans les 3 ou 4 mois à venir, je pense que de nombreuses bibliothèques communes seront compatibles avec la version 5.2. Cependant, à mon avis, à moins que ce ne soit une petite affaire, je pense qu’il est trop tôt pour baser les projets sur la version 5.2. Le portage du code vers la version 5.2 n’est pas si difficile (surtout si vous vous familiarisez avec les fonctions obsolètes afin que vous puissiez éviter de trop vous setfenv() à elles dans la version 5.1 – en particulier setfenv() et module() ).