Manual Capitulo Siete |
|
Aquí presentamos las incompatibilidades que encontrarían al migrar un programa de Lua 5.0 a Lua 5.1. Podrían evitar la mayoria de las incompatibilidades por compilar Lua con opciones apropriadas (véase el archivo luaconf.h. Sin embargo, todas las opciones de compatibilidad serán eliminados en la próxima versión de Lua.
arg -- una tabla con los argumentos adicionales -- a la expresión "vararg" .... (Véase la opción de compilación LUA_COMPAT_VARARG en luaconf.h.)
for y repeat.
[[cadena]]) ya no permite inclusión recursiva. Podrían usar la nueva sintaxis [=[cadena]=] en tal caso. (Véase la opción LUA_COMPAT_LSTR en luaconf.h).
string.gfind fue dado el nuevo nombre string.gmatch. (Véase la opción LUA_COMPAT_GFIND en luaconf.h).
string.gsub sea una función y la función devuelva nil o false, el reemplazo es el "match" completo en lugar de la cadena vacía.
table.setn fue desaprobado. La función table.getn corresponde al nuevo operador de longitud (#) lo cual deberían usar en lugar de la función. (Véase la opción LUA_COMPAT_GETN en luaconf.h).
loadlib fue dado el nuevo nombre package.loadlib. ((Véase la opción LUA_COMPAT_LOADLIB en luaconf.h).
math.mod fue dado el nuevo nombre math.fmod. (Véase la opción LUA_COMPAT_MOD en luaconf.h).
table.foreach y table.foreachi están desaprobados. En su lugar, podrián usar un bucle for con pairs o ipairs.
require debido al nuevo sistema de módulos. Sin embargo, el funcionamento actual es más o menos compatible con lo anterior salvo por el hecho que require obtiene el camino de package.path en lugar de LUA_PATH.
collectgarbage tiene diferentes argumentos. La función gcinfo está desaprobado y debería ser reemplazado por collectgarbage("count").
luaopen_* (para abrir bibliotecas). Ahora hay que invocarlos a través de Lua, como cualquier función de Lua.
lua_open ha sido reemplazado con lua_newstate para permiter que el usuario establece una función de reparto de memoria. Podrían usar luaL_newstate en la biblioteca estándar para crear un estado con una función estándar de reparto en base de realloc().
luaL_getn y luaL_setn en la biblioteca auxiliar. lua_objlen reemplaza luaL_getn. No hay reemplazo para luaL_setn.
luaL_openlib fue reemplazado por luaL_register.
luaL_checkudata ya levanta un error cuando el valor dado no es un "userdata" del tipo especificado. En la versión 5.0, devolvió NULL en tal circunstancia.